PHPのバッチファイルというというのかどうかわかりませんが

sleep関数を使用して、無限ループさせて、バックグラウンドで
実行させたいです。
そのファイルを、監視するにはどういったプログラムを
書けばいいのでしょうか?

そのPHPファイルが、ゾンビプロセスになった場合に
いったん終了させてから、再度立ち上げ直すとか出来ますでしょうか?


回答の条件
  • 1人2回まで
  • 登録:2008/06/03 11:05:58
  • 終了:2008/06/10 11:10:02

回答(5件)

id:ftns No.1

ftns回答回数153ベストアンサー獲得回数162008/06/03 15:28:15

ポイント27pt

UNIX(Linux/BSD)ならば、sleep関数を使わずにcrontabを使いましょう。

crontabならば定期的にスクリプトを実行してくれます。プロセスをずーっと走らせておく必要が

ありませんので、途中で死ぬかもしれないといったプロセスの監視が不要です。

http://ja.wikipedia.org/wiki/Crontab

id:hopefully

Crontabだと最低時間が1分じゃないですか?

10秒おきくらいで実行したいスクリプトです。

Crontabに複数同じ行を書けばいけると思うのですが

それもなしでお願いします。

2008/06/03 17:03:26
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/06/03 19:08:25

ポイント26pt

PHPスクリプト内部でgetmypid関数を使って自身のプロセスID(PID)を外に出してやれば監視は可能ですが、無限ループしているとなると、getmypidの実行タイミングが不定です。下手をすると、PIDを返す前にゾンビ化してしまうかもしれません。


次に、psコマンドを使って当該PHPプロセスのPIDを取り出す方法が考えられますが、2つのPHPプロセスが走っていると、識別が難しそうです。


PIDが分かりさえすれば、killコマンドを使って、当該プロセスを強制終了できます。ただし、強制終了後、途中から(処理終了したポイントから)再開するというのは、非常に難しいと思います。


デーモン化するなど、無限ループ以外で処理することをご検討してはいかがでしょうか。

id:Youshi No.3

Youshi回答回数30ベストアンサー獲得回数32008/06/03 18:28:26

ポイント27pt

かなりお馬鹿なやり方ですが、実行して10秒sleepを6回繰り返すスクリプトを書いてcronに1分おきにやらせるとか(笑

id:ftns No.4

ftns回答回数153ベストアンサー獲得回数162008/06/09 13:50:32

ポイント10pt

sleepだと処理時間分遅れるので、pcntl_alarmを使いましょう。

http://jp2.php.net/manual/ja/function.pcntl-alarm.php

監視はcrontabで何分〜数時間おきに見ておけば良いのでは?

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 shintabo 45 39 10 2008-06-09 01:24:23

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません