php スクリプトを使用して、アプリケーションのバウンス アドレスで受信した電子メールを読み取り、処理を行っています。スクリプトはcronジョブで実行するようにスケジュールされていますが、私はそれを制御できず、サーバーにファイルを書き込む権限もありません(そのため、ファイルロックメカニズムがほとんどなくなります). スクリプトのインスタンスを常に 1 つだけ実行するようにする別の方法はありますか? サーバーはLinuxを実行しています。
質問する
74 次
2 に答える
1
これを試すことができると思います:
// we use ourselves as the lock file
if (false === ($f = fopen(__FILE__, 'r'))) {
die("Could not open lock file");
}
if (false === flock($f, LOCK_EX)) {
die("Could not obtain lock");
}
// do your stuff
flock($f, LOCK_UN);
fclose($f);
アドバイザリ ロックを操作するために書き込みアクセス権は必要ありません。もちろん、これは構成で有効になっていることを前提としていflock()
ます。
于 2013-03-06T13:41:15.807 に答える
0
少し汚れていますが、
if(file_exists("block.bin")) {
//already running
}
file_put_contents("block.bin", 1);
//do stuff
unlink("block.bin");
于 2013-03-06T13:41:28.630 に答える