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 'Не удалось получить блокировку'; но ничего не происходит, что не так?
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 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 "ОК";


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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽