最近、PHP の機能を Python や Erlang と比較して、PHP にはあまり使われない機能がたくさんあることがわかりました。多くの優れたアプリケーションは、PHP CLI を使用して実装できます。たとえば、検索エンジン クローラーや長時間実行される計算スクリプトは、サーバーの運用とメンテナンスのために他の言語を完全に置き換えることができます。これは、PHP に慣れている人にとってはさらに強力です。
なぜPHPマルチプロセスが良いのか? ほとんどのオンラインゲームサーバーがマルチプロセスではなくマルチスレッドを採用している理由は、スレッドよりもプロセスの方が安定しているからです。さらに、マルチスレッドは現在のマルチコア サーバーのアプリケーション シナリオに適しており、マルチコア コンピューティングの機能をより適切に活用できます。プロセスのメンテナンスには、多くのオペレーティング システム レベルのツールを使用できます。 Message Queue は、スレッド通信に関する多くの問題を解決します。したがって、PHP マルチプロセスは、サーバー側のコンピューティングを多用するアプリケーションに非常に適しています。
ベトナムの IT 企業によると、法的文書の配布や銀行口座金額の処理などのエンタープライズ レベルのアプリケーションで PHP バックグラウンド マルチプロセスを使用することに成功しました。
バックグラウンド PHP プロセスを使用すると、サーバーに影響を与えることなく、Web ページのリクエストを同時に処理できます。この種のバックグラウンドプロセスが失敗した場合、原因を見つけて復元または修正するのが簡単であるため、より堅牢になります。さまざまなプロセスが相互に分離され、効率が向上し、各サービス プロセスを均一にスケジュールできます。
PHPは現在最も広く使用されているWeb開発言語であるため、サーバーサイドアプリケーションにPHPを使用するとコストを削減できます。既存の人員、既存の構成、さらにはコードを再利用することもできます。 PHP バックグラウンド マルチプロセスの使用に適しているのはどのようなシナリオですか? たとえば、メールの配信、リモート サービスの呼び出し、データの集約、スケジュールされたタスク、計算結果のキャッシュなど、すぐに返す必要がない場所です。
PHPの単一プロセスで目的を達成できる部分もあり、プロセスの同期やデータの共有を考慮する必要がありません。 PHP CLI (SAPI SERVER API) コマンド ライン インターフェイスを使用して、CRON スケジュールされたタスクとグラフィカル インターフェイス プログラム (GTK ライブラリを使用) を実行できます。
PHP CLIの例
リーリー
PHP はコマンドラインパラメータを読み取ります:
リーリー
PHPコマンドラインインターフェースの標準入出力:
リーリー
CRONJOB は特定のタスクを定期的に実行できますが、繰り返し実行しないようにする必要があります。ロック ファイルは最初に作成され、最後に削除されます。または、ps コマンドを使用して処理します。タスク キューは、MySQL、Key/VALUE データベース、またはメッセージ キューを使用して実装できます。
プロセス制御関連機能:
リーリー
PHP は特定のエラーに対して例外をスローできません。PHP マルチプロセス アプリケーションのフォールト トレランスを向上させるにはどうすればよいですか?
◆プロセスを監視し、依存するプロセスが失敗した場合にレポートすることができます。
◆CRONJOBを使用してプロセスを監視します。
◆監視対象プロセスのPIDをファイルに書き込みます。
◆PIDファイルが存在するかどうか定期的に確認してください。 ps -o pid= または file_exists(‘/proc/’) を確認してください。
◆スレッドが存在しない場合はプロセスを再起動してください。
振り返ってみると、これまでJavaやPythonで行っていたサーバーサイドのサービスもPHPを使って実装できます。単一言語のほうが保守が簡単です。以前は、Web 言語に対する人々の理解は非常に一面的でした。マルチスレッドやトランザクションなどは、同じ目的を達成するために変更できます。