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';
スクリプトは、同じブラウザから2つのインスタンスを同時に開いた場合に待機している間に、異なるブラウザから同時に2回ファイルを呼び出す場合に問題なく機能します。つまり、最初の呼び出しはロックを取得し、2番目の呼び出しはロックを待機して閉じません。
インスタンスがすでに機能しているファイルかどうかを確認する他の方法があるかもしれませんが、それらのほとんどは何かを実行してから元に戻します。私の使用例では、スクリプトは時間がかかるか、メモリ制限を超える可能性があるため、いつでも終了する可能性があります。なんらかの理由で
何か助けはありますか?