ホームページ > バックエンド開発 > PHPチュートリアル > PHP プログラム レベルのデーモンの実装と最適化の概要_PHP チュートリアル

PHP プログラム レベルのデーモンの実装と最適化の概要_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:10:28
オリジナル
899 人が閲覧しました

最初に説明する必要があるのは、デーモンとは何かということです。

デーモンプロセスは、常にバックグラウンドで実行されるプロセスです。たとえば、httpd や mysqld など、私たちが開始するプロセスはすべて常駐メモリ内で実行されるプログラムです。

ニーズの分析:

要件: 常駐キュー messageQueue があります (Redis メモリ内にあると想定されます)。このキューには、要素をキューに追加するリクエストが時々含まれる場合があります。同時に、キューに要素がある場合、その要素がキューの順序に従ってポップアウトされて処理されることを要求します (この処理は単に echo 'test' であると仮定します);

解決策:

ここで、すでに 2 つの関数があると仮定します

function oPopMessageQueue(){ …} //キューの最後の要素を取得します。

function vDealElement($element) { …} 要素を処理します。

上記の要件を満たすためにデーモンを作成する必要があります。

プログラム:

わかりました。このプログラムは、while ループを使用して実行するのが簡単です。


コードをコピーします コードは次のとおりです:
while(true)
{
if( $element = oPopMessageQueue())
{
vDealElement ($element);
}
}


考慮してください 1:
このプログラムを実行し続けると、すでに上記のニーズを満たすことができます。 ただし、次の点を考慮してください。 1. PHP プロセスで実行している場合、さまざまな状況 (長時間実行など) によりプロセスがハングする可能性があるため、プログラムは自動的に再接続できません。

方法: cronを使用します

このプログラムを 10 分ごとに実行するための時間指定スクリプトでプロセスを開始します。

次に、このプログラムの実行時間を 10 分に設定し、10 分後に自動的にキャンセルするため、コードは次のようになります


コードをコピー

コードは次のとおりです: while(true)
{
if($element = oPopMessageQueue( ))
vCheckTimeLimit();
vDealElement($elemnt);
vCheckTimeLimit() empty($timeStart))
{
using using が必要になります。いつでもスクリプトを一時停止する機能:

そこで、ファイルを使用して一時停止機能を追加することを検討しました



コードをコピーします

コードは次のとおりです:


while(true)
{
if($ element = oPopMessageQueue())
{
vCheckTimeLimit();
vCheckEnd(); e/end"))
exit ;
}
}

3 を検討してください。
マルチスレッド プログラムに変更して、より効率的に実行するには?

これには、1 つのプロセスの cron 制限を 10 分から 1 分ごとに変更するだけです
これにより、プログラムを実行するスレッドが 10 個になることが保証されますただし、基本的な要件があります。 : oPopMessageQueue() はアトミック操作です



http://www.bkjia.com/PHPjc/327061.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/327061.html

技術記事

最初に説明する必要があるのは、デーモンとは何かということです。 デーモンは、常にバックグラウンドで実行されるプロセスです。たとえば、httpd や mysqld など、私たちが開始するプロセスはすべて常駐メモリ内で実行されるプログラムです。 ...





ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート