PHP: эксклюзивный замок на файле никогда не получен

StackOverflow https://stackoverflow.com//questions/23057083

  •  23-12-2019
  •  | 
  •  

Вопрос

На моем скрипте 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);
.

Обратите внимание на отсутствующие двойные кавычки вокруг LOCK_EX

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top