在我的php脚本上,解析一个字符串后,我需要将一些数据写入一个文件(如果不存在则创建它之后)。在写文件之前,我需要独占锁以避免出现问题。 这是我的代码:
foreach ($elements[0] as $current) {
$file_handler = fopen($my_folder . "/" . $current . ".txt", "a");
$locked = flock($file_handler, "LOCK_EX");
while (!$locked) {
usleep(500000);
$locked = flock($file_handler, "LOCK_EX");
}
//got lock
fwrite($file_handler, $mystring . "\n");
//release lock
flock($file_handler, LOCK_UN);
fclose($file_handler);
}
return;
现在,似乎行不通。 fopen创建文件,但我的代码似乎进入循环内部(文件被创建,但没有写入内部)。怎么了?
答案 0 :(得分:2)
您将锁定的参数作为字符串而不是常量传递。
尝试:
$locked = flock($file_handler, LOCK_EX);
请注意 LOCK_EX
周围缺少双引号