ホームページ  >  記事  >  バックエンド開発  >  PHP は Linux プログラムの問題を特定します

PHP は Linux プログラムの問題を特定します

WBOY
WBOYオリジナル
2016-07-25 09:02:36817ブラウズ

サーバー上でスクリプトを作成する場合、定期的に実行するために crontab にスクリプトを入れる必要がある場合があります。時間が経つと、プログラムを繰り返し実行するとリソースが過剰に消費されるという問題が発生します。 Puyu は以下の 2 つのメソッドを書きました。
元のアドレス: http://www.pooy.net/php-linux-grep.html

  1. //Pooy ブログ
  2. // www.pooy.net
  3. // コミュニケーションやディスカッションへようこそ!
  4. //サーバー上でスクリプトを作成する場合、定期的に実行するために crontab にスクリプトを入れる必要がある場合があります。時間が経つと、プログラムの繰り返し実行によりリソースが過剰に消費されるという問題が発生します。 Puyu は以下の 2 つのメソッドを書きました:
  5. //最初のメソッド: Linux で通常のマッチングを使用する
  6. function ifrun($clsname,$bf = 0)
  7. {
  8. // 以下を検出します。実行中のプロセスがある場合、そのプロセスは実行されません
  9. $str=shell_exec("/bin/ps ax > /home/root/".$clsname."_run.txt");
  10. $str=shell_exec("/bin/grep -c '" .$clsname. ".php' /home/root/".$clsname."_run.txt");
  11. if($bf >0)
  12. {
  13. if($str >=$bf)
  14. {
  15. return 1;
  16. }
  17. else
  18. {
  19. return 0;
  20. }
  21. }
  22. else
  23. {
  24. if ($str>=2)
  25. {
  26. return 1;
  27. }
  28. else
  29. {
  30. return 0; }
  31. }
  32. }
  33. //呼び出し:
  34. if (ifrun('pooy',5))
  35. {
  36. die("pooy is running");
  37. }
  38. //備考: pooy はプログラム pooy.php の名前です!
  39. //2 番目の方法: プロセスをファイルに書き込み、ファイル関数を使用して文字列を読み取って照合します
  40. system('ps -ef |grep wget > /root/pooy.txt');
  41. $ arr=file('/root/pooy.txt');
  42. $total=count($arr);
  43. for($i=0;$i $count=array() ;
  44. if(stristr($arr[$i],'www/pooy') !== FALSE) {
  45. //echo '"earth" が文字列内に見つかりません';
  46. $count[]='no';
  47. Break ;
  48. }
  49. }
  50. if(count($count) >= 1 )
  51. {
  52. echo "同じプログラムが実行されています";
  53. exit();
  54. }else
  55. {
  56. echo "start________________________________________________";
  57. }
  58. //注: "www/pooy" はプログラムに含まれる文字列です!
  59. //PHP プログラムは Linux 上でよりスムーズに実行できるようになりましたか?
  60. //ダウンロードアドレス: http://www.pooy.net/php-linux-grep.html
コードをコピー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。