2

php スクリプトを使用して、アプリケーションのバウンス アドレスで受信した電子メールを読み取り、処理を行っています。スクリプトはcronジョブで実行するようにスケジュールされていますが、私はそれを制御できず、サーバーにファイルを書き込む権限もありません(そのため、ファイルロックメカニズムがほとんどなくなります). スクリプトのインスタンスを常に 1 つだけ実行するようにする別の方法はありますか? サーバーはLinuxを実行しています。

4

2 に答える 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 に答える