電子書籍の厳選無料作品が豊富!

while.php
while(true){

}

cronからwhile.phpを実行した場合は
ps auxでプロセスをkillすればよですが

ブラウザからwhile.phpにアクセスした場合は
ps auxでは表示されず、いつまで経っても実行され負荷が掛かり続けます。

このような場合、cronで実行された時のように詳細を表示し、killする方法はありますでしょうか?

httpdをrestartすればkillされますが、他の方法で確認・停止できるようなものがありましたらご教示頂けると幸いです。
宜しくお願いいたします。

A 回答 (1件)

cronでCLI版PHPを実行した場合は、そのコマンドがプロセス名として見えます。


#このプロセスのオーナーは、cronを定義したユーザーアカウント。

Webアクセスでモジュール版PHPをで実行した場合は、httpdプロセス内のモジュールとしてで動くので
プロセス名はhttpdで、他との区別がつきません。
#このプロセスのオーナーは、httpdの実行オーナー(多くはapache)。

なので、killしたいなら、プロセス名でなく、httpdの実行開始時間や経過時間をみて、
該当するプロセスIDを見つけて、httpdをkillするしかないかと思われます。


というか、while.phpにタイムアウト設定(デフォルトで30秒のはず)をセットしておくとか、
暴走しないように、リトライ回数の上限なり、経過時間測定して強制終了させるなりして、
無限ループ防止策を入れるのが普通じゃないですかね。
実運用時でも、管理者がプロセスをkillしないとだめ なんてことになるのは、
現実的ではないですから。
    • good
    • 0
この回答へのお礼

ありがとうございました。
とても参考になりました。

お礼日時:2012/09/04 14:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!