php マルチスレッドの素晴らしい使い方を理解する

WBOY
リリース: 2016-07-25 08:57:19
オリジナル
1117 人が閲覧しました
この記事では、Linux 環境における PHP マルチスレッドの素晴らしい使用方法を紹介します。必要な方は参考にしてください。

このセクションで共有される PHP マルチスレッドの知識には、PHP の pcntl_fork 関数の使用が必要です。この関数は、オペレーティング システムのフォークの実装に依存します。上記の内容は、Linux/Unix システムにのみ適用されます。

pcntl_fork 関数の使用法を見てみましょう:

リーリー

pcntl_fork 経由で子プロセスを作成します。 戻り値が -1 の場合、子プロセスの作成は失敗しています。 親プロセスには正常に作成されたプロセスIDが返され、子プロセスには0が返されます。

次のように書くのが一般的です:

リーリー

親プロセスが子プロセスが正常に終了したことを知りたい場合は、前の pcntl_wait を追加できます。

実際の開発におけるその役割について話しましょう。

1、バックグラウンドプログラム コマンドラインプログラムは書くのが簡単ですが、サービスプログラムも同様に、このサービスプログラムを書くのが最も難しいと思います。

Linux では、コマンドの後に & を追加するだけでコマンド ライン プログラムを実行できます。しかし、pcntl_fork を使用すると、メイン プロセスが子プロセスを正常に作成すると、世界が非常に美しいことに突然気づきます。子プロセスを取得します。 ID の後に、死ぬ前に「正常に実行されました。ID は xxxx (子プロセスの ID) です」と言うのを忘れませんでした。終了すると、システムは 0 (正常) を返します。出口)。

先ほど述べたように、プログラムはメモリに常駐しており、メモリの解放と画面ではなくログ ファイルへの情報の出力に注意してください (情報が出力されるとすぐにプログラムが終了します)。 : プログラムは他のスクリプトによって呼び出されます。他のスクリプトはプログラムが正常に実行されているかどうかのみを考慮します。プログラムの実行に時間がかかる場合は、スクリプトを待たせないようにするのが最善です。 :)

2、処理が遅れました。 プログラムが終了するとき、プログラム自体を削除するなど、生成したものをクリーンアップする必要がある場合があります (もちろん、たとえば、Linux では実行中のファイルを削除できます)。このとき、別のプロセスを開始して終了することができます。サービス プログラムを作成するときは、プログラムの実行ステータスを記録するためにログ ファイルを作成する必要があります (そうしないと、プログラムがそこでスリープしているかどうかは誰にもわかりません)。正常に終了します プログラムが終了したことを示すログを書き込むことはできますが、Linux でプログラムが great kill -9 を受け取った場合、自身の終了動作を記録するにはどうすればよいですか? うーん...これは PHP のプロセス シグナルに関連しているようです。これとは何の関係もありません。

ケース 2: 完全なプログラムは通常、開始、停止、再起動などのパラメーターをサポートしています。開始は言うのが簡単で、開始と停止は言うのが簡単なので、再起動の場合は、最初に停止してから開始します。 . うーん、pcntl_fork とは関係ないようです。再起動シグナルを受信すると、強制終了して再起動することはできません。

より穏やかなアプローチは、現在のプロセスを終了し、別のプロセスに再度プルアップさせることです。

3、不滅のプロセス これはいわゆるデュアルプロセスです。



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