fapchat
@fapchat

Почему во время получения блокировки ничего не происходит?

<?php
$fp = fopen('lock.txt', 'r+b');

/* Включаем параметр LOCK_NB в операции LOCK_EX */
while(!flock($fp, LOCK_EX | LOCK_NB)) {
    echo 'Не удалось получить блокировку';
    sleep(1);
}
 echo "qweqwewqe";
 ?>

В теории 1 секунду должен работать echo 'Не удалось получить блокировку'; но ничего не происходит, что не так?
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 1
IgorPI
@IgorPI
В общем дела обстоят так.
Есть вероятность что файла не было, его нужно было создать.
Или использовать флаг w+
Так же указать правильный путь к файлу __DIR__ . '/lock.txt',

$fp = fopen(__DIR__ . '/lock.txt', 'w+');
while(!flock($fp, LOCK_EX | LOCK_NB)) {
   print "Неудалось получить доступ к файлу!";
   exit(-1);
}
sleep(10); // 10 sec
print "ОК";


У себя проверил, работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы