PHP flock () non-blocking ainda bloquear por quê?
Estou usando a função flock () para verificar se outra instância do script já está em execução, obtendo o bloqueio em um arquivo temporário, para que a próxima instância verifique se o arquivo não está bloqueado, caso contrário, ele pára
<?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';
o script funciona sem problemas ao chamar o arquivo duas vezes ao mesmo tempo de navegadores diferentes enquanto aguarda se eu abri duas instâncias ao mesmo tempo no mesmo navegador, ou seja, a primeira chamada obtém o bloqueio e a segunda espera pelo bloqueio e não fecha
Eu sei que pode haver outras maneiras de verificar se um arquivo de uma instância já está funcionando, mas a maioria deles fará uma coisa e, em meu caso, o script pode terminar a qualquer momento, pois pode levar muito tempo ou exceder o limite de memória ou por qualquer motivo
qualquer ajuda ?