• ベストアンサー

httpリクエストをkillするには?

while.php while(true){ … } cronからwhile.phpを実行した場合は ps auxでプロセスをkillすればよですが ブラウザからwhile.phpにアクセスした場合は ps auxでは表示されず、いつまで経っても実行され負荷が掛かり続けます。 このような場合、cronで実行された時のように詳細を表示し、killする方法はありますでしょうか? httpdをrestartすればkillされますが、他の方法で確認・停止できるようなものがありましたらご教示頂けると幸いです。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

cronでCLI版PHPを実行した場合は、そのコマンドがプロセス名として見えます。 #このプロセスのオーナーは、cronを定義したユーザーアカウント。 Webアクセスでモジュール版PHPをで実行した場合は、httpdプロセス内のモジュールとしてで動くので プロセス名はhttpdで、他との区別がつきません。 #このプロセスのオーナーは、httpdの実行オーナー(多くはapache)。 なので、killしたいなら、プロセス名でなく、httpdの実行開始時間や経過時間をみて、 該当するプロセスIDを見つけて、httpdをkillするしかないかと思われます。 というか、while.phpにタイムアウト設定(デフォルトで30秒のはず)をセットしておくとか、 暴走しないように、リトライ回数の上限なり、経過時間測定して強制終了させるなりして、 無限ループ防止策を入れるのが普通じゃないですかね。 実運用時でも、管理者がプロセスをkillしないとだめ なんてことになるのは、 現実的ではないですから。

phpmysql
質問者

お礼

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

関連するQ&A