忍者ブログ
Admin / Write / Res
ちゃんとカテゴリ分けされておりませんので、 記事をお探しならブログ内検索が便利です。 ご活用くださいませー+.(≧∀≦)゚+.゚
ブログ内検索
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カウンター
アクセスカウンター
最新コメント
[11/22 รูปพวงหรีดแสดงความเสียใจ]
[11/22 ดอกไม้ งานศพ]
[11/22 ช่อดอกไม้ตามสั่ง]
[11/22 ร้านดอกไม้บรรยากาศอบอุ่น]
[11/21 Robertret]
最新トラックバック
プロフィール
+ハンドル+
y_ayamori(purple)
+職業+
IT系エンジニア
+すまい+
さいたま
バーコード
[648]  [647]  [646]  [645]  [643]  [642]  [641]  [640]  [639]  [638]  [637
おそらくPHPに限ったことではないのだけど。
プログラムの中でバックグラウンドプロセスを生成したいケースはよくあること。
PHPが正式にCLIに対応した5系以降であれば、利用シーンはあると思います。

しかし、一度バックグラウンドへプロセスを投げてしまうと普段フォアグランドで作業する我々にはその処理を追いにくくなります。
特に、デバッグが不完全なプログラムで無限ループを生成してしまうと、ゾンビプロセスそのものです。
しかも通常のゾンビと違いリソースを食うのですから、ザ・ハウス・オブ・ザ・デッドのようです。

jobsコマンドで発見出来ないので、今ひとつ制御が難しいですが、
PHPで何が何だか分からなくなったら、killしてしまうのも良いかもしれませんね。

killall php

ただ、運用中のサーバだと・・・
正直通常バッチプロセスなのか、バックグラウンドで迷子になっているプロセスなのかわからないんですよね。。。
こうならないように自由にできる環境で十分に試験は行いたいものです^^



例:無駄プロセスを生成するPHPソース。

main.php
<?php
  $cmd = "/usr/local/bin/php /root/sub.php &";
  for($i=1; $i=10; $i++){
    `$cmd` ;
  }
?>



sub.php
<?php
  while(true){
    sleep(5);
  }
?>



拍手

PR
この記事にコメントする
Name
Title
Color
Mail
URL
Comment
Password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (管理人にのみ表示)
この記事へのトラックバック
この記事にトラックバックする:
Copyright ©  アナログを愛するデジタル生活館 All Rights Reserved.
* material by Pearl Box   * Template by tsukika

忍者ブログ [PR]