Задать вопрос
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 'Не удалось получить блокировку'; но ничего не происходит, что не так?
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Простой 7 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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 "ОК";


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

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

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