PHP flock () blockiert immer noch nicht, warum?

Ich verwende die Funktion flock (), um zu prüfen, ob bereits eine andere Instanz des Skripts ausgeführt wird, indem ich die Sperre für eine temporäre Datei erhalte. Daher sollte die nächste Instanz prüfen, ob die Datei nicht gesperrt ist, da sie sonst angehalten wird

<?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';

Das Skript funktioniert problemlos, wenn die Datei zweimal zur selben Zeit von verschiedenen Browsern aus aufgerufen wird, während es wartet, wenn ich zwei Instanzen gleichzeitig von demselben Browser aus geöffnet habe, d. h. der erste Aufruf ruft die Sperre auf und der zweite wartet auf die Sperre und schließt nicht

Ich weiß, dass es andere Möglichkeiten gibt, um zu überprüfen, ob eine Datei in einer Instanz bereits funktioniert, aber die meisten von ihnen tun etwas und machen es dann wieder rückgängig. In meinem Anwendungsfall kann das Skript jederzeit beendet werden, da es längere Zeit dauern oder das Speicherlimit überschreiten kann aus irgendeinem Grund

irgendeine Hilfe ?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage