サーバー上でスクリプトを作成する場合、定期的に実行するために crontab にスクリプトを入れる必要がある場合があります。時間が経つと、プログラムを繰り返し実行するとリソースが過剰に消費されるという問題が発生します。 Puyu は以下の 2 つのメソッドを書きました。 元のアドレス: http://www.pooy.net/php-linux-grep.html
- //Pooy ブログ
- // www.pooy.net
- // コミュニケーションやディスカッションへようこそ!
- //サーバー上でスクリプトを作成する場合、定期的に実行するために crontab にスクリプトを入れる必要がある場合があります。時間が経つと、プログラムの繰り返し実行によりリソースが過剰に消費されるという問題が発生します。 Puyu は以下の 2 つのメソッドを書きました:
- //最初のメソッド: Linux で通常のマッチングを使用する
-
- function ifrun($clsname,$bf = 0)
- {
- // 以下を検出します。実行中のプロセスがある場合、そのプロセスは実行されません
- $str=shell_exec("/bin/ps ax > /home/root/".$clsname."_run.txt");
- $str=shell_exec("/bin/grep -c '" .$clsname. ".php' /home/root/".$clsname."_run.txt");
-
- if($bf >0)
- {
- if($str >=$bf)
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
- else
- {
- if ($str>=2)
- {
- return 1;
- }
- else
- {
- return 0; }
- }
- }
-
- //呼び出し:
-
- if (ifrun('pooy',5))
- {
- die("pooy is running");
- }
-
-
- //備考: pooy はプログラム pooy.php の名前です!
-
- //2 番目の方法: プロセスをファイルに書き込み、ファイル関数を使用して文字列を読み取って照合します
-
- system('ps -ef |grep wget > /root/pooy.txt');
- $ arr=file('/root/pooy.txt');
- $total=count($arr);
- for($i=0;$i $count=array() ;
- if(stristr($arr[$i],'www/pooy') !== FALSE) {
- //echo '"earth" が文字列内に見つかりません';
- $count[]='no';
- Break ;
- }
-
- }
-
- if(count($count) >= 1 )
- {
- echo "同じプログラムが実行されています";
- exit();
- }else
- {
- echo "start________________________________________________";
- }
-
-
- //注: "www/pooy" はプログラムに含まれる文字列です!
-
- //PHP プログラムは Linux 上でよりスムーズに実行できるようになりましたか?
-
- //ダウンロードアドレス: http://www.pooy.net/php-linux-grep.html
-
コードをコピー
|