PHP flock () неблокирует все еще блокировать почему?
Я использую функцию flock (), чтобы проверить, запущен ли другой экземпляр скрипта, получив блокировку для временного файла, поэтому следующий экземпляр должен проверить, не заблокирован ли файл, иначе он остановится
<?php
$fp = fopen("/var/tmp/your.lock", "w");
if (!flock($fp, LOCK_EX|LOCK_NB)) { // try to get exclusive lock, non-blocking
die("Another instance is running");
}
//my script
sleep(10);
echo 'completed successfully';
Сценарий работает без проблем при двухкратном вызове файла одновременно с разными bro, wsers, в то время как он ожидает, если я одновременно открою два экземпляра из одного и того же браузера, т.е. первый вызов получит блокировку, а второй ожидает блокировки и не закрывается
Я знаю, что могут быть другие способы проверить, работает ли файл, экземпляр которого уже работает, но большинство из них сделает что-то, а затем отменит его, и в моем случае сценарий может завершиться в любое время, так как это может занять много времени или превысить лимит памяти или по любой причине
любая помощь ?