phpスクリプトデーモンプロセスの原理と実現方法の詳細
2238 ワード
この例ではphpスクリプトデーモンプロセスの原理と実現方法について説明します.皆さんの参考にしてください.具体的には以下の通りです.
考え方:
1.whileサイクル、現在操作するデータがなければ休眠できる.2.crontabスクリプトは一定期間ごとにスクリプトを実行し、実行時に実行中かどうかを検出し、実行がなければスキップします.3.nohupバックグラウンド実行4.flock-xnロック
例:
コードを実行するには:index.php
書いたphpスクリプト.デーモン・プロセスのメモリ・オーバーフローを防止するには、定期的にメモリ使用量を検出することを推奨します.次のコードをビジネス・スクリプトに配置します.
注意:
Nohupタスクの表示と閉じる方法:
オフ:
表示:
原理:
linux flockファイルロックを使用してタスクロックを実現し、衝突を解決する
書式:
オプション
-s,--shared:共有ロックを取得-x,--exclusive:独占ロックを取得-u,--unlock:ロックを削除する必要はありません.通常、スクリプトの実行が完了すると自動的にロック-nが破棄されます.--nonblock:ロックがすぐに取得されなければ、待機-wではなく直接失敗します.--timeout:ロックがすぐに取得されなければ、指定された時間-oを待機します.--close:コマンドを実行する前にファイルの記述記号を閉じます.コマンドがサブプロセスを生成するときにロックされないようにするための管理-c,--command:shellで個別のコマンド-hを実行し、--helpはヘルプ-Vを表示し、--version:バージョンを表示します
phpファイルを実行します.ファイルロックは排他ロックを使用し、ロックに失敗した場合は待機しません.パラメータは-xn
* * * * * flock -xn/tmp/mytest.lock -c 'php/home/fdipzone/php/test.php >>/home/fdipzone/php/test.log'
これにより、タスクが完了すると、次のタスクは/tmp/mytestと判断する.ロックがロックされると、現在のタスクを終了し、次のサイクルで判断します.
PHPについてもっと兴味のある読者は、「PHPプロセスとスレッド操作テクニック総括」、「PHPネットワークプログラミングテクニック総括」、「PHP基本文法入門教程」、「PHP配列(Array)操作テクニック大全」、「php文字列(string)用法総括」、「php+mysqlデータベース操作入門チュートリアル」および「php一般データベース操作テクニック要約」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.
考え方:
1.whileサイクル、現在操作するデータがなければ休眠できる.2.crontabスクリプトは一定期間ごとにスクリプトを実行し、実行時に実行中かどうかを検出し、実行がなければスキップします.3.nohupバックグラウンド実行4.flock-xnロック
例:
コードを実行するには:index.php
";
error_log($message);
sleep(5);
}
#/tmp/lock/test1.lock , ,
* * * * * flock -xn /tmp/lock/test1.lock -c 'nohup php index.php >> /php/test.log 2>&1 &'
* * * * * flock -xn /tmp/mytest.lock -c 'php /home/fdipzone/php/test.php >> /home/fdipzone/php/test.log'
書いたphpスクリプト.デーモン・プロセスのメモリ・オーバーフローを防止するには、定期的にメモリ使用量を検出することを推奨します.次のコードをビジネス・スクリプトに配置します.
if(memory_get_usage()>100*1024*1024){
exit(' ');// 100M ,
}
注意:
Nohupタスクの表示と閉じる方法:
オフ:
// :
ps -e | grep commend
kill -9 pid
// :
fg %n //n jobs
表示:
//
jobs
原理:
linux flockファイルロックを使用してタスクロックを実現し、衝突を解決する
書式:
flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command
オプション
-s,--shared:共有ロックを取得-x,--exclusive:独占ロックを取得-u,--unlock:ロックを削除する必要はありません.通常、スクリプトの実行が完了すると自動的にロック-nが破棄されます.--nonblock:ロックがすぐに取得されなければ、待機-wではなく直接失敗します.--timeout:ロックがすぐに取得されなければ、指定された時間-oを待機します.--close:コマンドを実行する前にファイルの記述記号を閉じます.コマンドがサブプロセスを生成するときにロックされないようにするための管理-c,--command:shellで個別のコマンド-hを実行し、--helpはヘルプ-Vを表示し、--version:バージョンを表示します
phpファイルを実行します.ファイルロックは排他ロックを使用し、ロックに失敗した場合は待機しません.パラメータは-xn
* * * * * flock -xn/tmp/mytest.lock -c 'php/home/fdipzone/php/test.php >>/home/fdipzone/php/test.log'
これにより、タスクが完了すると、次のタスクは/tmp/mytestと判断する.ロックがロックされると、現在のタスクを終了し、次のサイクルで判断します.
PHPについてもっと兴味のある読者は、「PHPプロセスとスレッド操作テクニック総括」、「PHPネットワークプログラミングテクニック総括」、「PHP基本文法入門教程」、「PHP配列(Array)操作テクニック大全」、「php文字列(string)用法総括」、「php+mysqlデータベース操作入門チュートリアル」および「php一般データベース操作テクニック要約」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.