人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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




●質問者: hopefully
●カテゴリ:就職・転職 コンピュータ
✍キーワード:PHP ゾンビ バックグラウンド バッチ ファイル
○ 状態 :終了
└ 回答数 : 4/5件

▽最新の回答へ

1 ● ftns
●27ポイント

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

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

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

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

◎質問者からの返答

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

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

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

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


2 ● pahoo
●26ポイント

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


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


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


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


3 ● Youshi
●27ポイント

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


4 ● ftns
●10ポイント

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ