11

Jabber サーバーをリッスンし、それに応じて応答するスクリプトがあります。止まるはずがありませんが、昨夜は止まりました。ここで、毎分 cron ジョブを実行して、スクリプトが実行されているかどうかを確認し、実行されていない場合は開始したいと考えています。

問題は、特定のスクリプトがまだ実行されているかどうかを確認するにはどうすればよいかということです。

いくつかのソリューションがここに投稿されていますが、それらはすべて Linux 用であり、私は Windows ソリューションを探しています。アイデアはありますか?ありがとう。

4

3 に答える 3

4

手っ取り早い回避策として、CURRENT_TIMESTAMP に設定された日付列を使用してデータベース内の行をスクリプトで更新することが考えられます。cron 2 番目のスクリプトで、この行のタイムスタンプが最近のものかどうかを確認します。

于 2010-04-14T01:59:21.177 に答える
0

私は同じ問題を抱えていて、このコードで解決しました:

file_put_contents("status.txt","ping");

スクリプトのループ内に配置します

そのため、ファイルの最終変更日をチェックして、スクリプトがアクティブかどうかを確認します

HDに過負荷をかけないようにするには、次のようにします。

$i++
if( $i%100 == 0)
    file_put_contents("status.txt","ping");

これは、$ i==100または200または300などの場合にファイルを書き込みます。

これは回避策です

于 2010-04-14T02:28:36.687 に答える
0

これが私が通常行うことです:

  1. ステータス ディレクトリを作成します。例: /data/status/
  2. 私のスクリプトでは、ステータスファイルが存在するかどうかを確認します
    1. 存在する場合は、スクリプトを終了します
    2. 存在しない場合は、プロセスを続行します

ただし、これには問題があります。スクリプトが終了し、ステータス ファイルが削除されなかった場合はどうなるでしょうか。

次のような小さな保存チェックを追加できます。

  1. 毎分、ステータスファイルを更新
  2. cron を開始するたびに、ステータス ファイルが最後に更新されたかどうかを確認します。
于 2010-04-14T02:00:23.483 に答える