PHP: эксклюзивный замок на файле никогда не получен
Вопрос
На моем скрипте 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 Создать файл, но мой код кажется в цикле внутри, когда (файл создан, но ничего не писал внутри).Что не так?
Решение
Вы передаете аргумент для блокировки в виде строки вместо константы.
попробуйте:
$locked = flock($file_handler, LOCK_EX);
.
Обратите внимание на отсутствующие двойные кавычки вокруг
Не связан с StackOverflow