PHP でのデーモンプロセスの作成
今日の午後、segmentfault.com で質問のタイトルを「サービス指向 PHP を実装する方法」というもので、PHP は Web 経由でのみ呼び出すことができるかどうかを尋ねていました。実際、多くの人が PHP の使用シナリオについて誤解しています。PHP は Web スクリプトを作成するためにのみ使用できると考えています。実際、PHP 4 以降、PHP の使用シナリオは Web リクエストの処理に限定されなくなりました。 PHP のアーキテクチャ システムの観点から見ると、PHP は、sapi、php コア、zend エンジンの 3 つのレベルに分かれています。 PHP コア自体は Web と連携していません。たとえば、mod_php は、Apache 用に作成された sapi 実装であり、これらの sapi と組み合わせて使用されます。 Web サーバーは Web リクエストを処理します。ただし、Web と関係のない Sapi も多数あります。たとえば、cli sapi はコマンドライン環境で php を直接実行でき、embed sapi は他の言語 (Lua など) に php を埋め込むことができます。ここでは、PHP のアーキテクチャ システムと SAPI について詳しく説明するつもりはありません。アーキテクチャ システムの観点から、PHP はすでにさまざまな環境をサポートするように設計されており、Web に固有のものではないことを説明したいと思います。 アーキテクチャ システムのサポートに加えて、PHP の豊富な拡張モジュールは、さまざまな環境で PHP が機能するためのサポートも提供します。たとえば、この記事で説明した pcntl モジュールと POSIX モジュールは、基本的なプロセス管理、信号処理、その他のオペレーティング システムを実現できます。 -level 関数とソケット モジュールにより、PHP はソケット通信機能を使用できるようになります。したがって、PHP を使用して、シェルや Perl で一般的に使用されるものと同様のツール スクリプト、さらにはサーバーの性質を持つデーモン プロセスを作成することができます。 PHP でデーモン サーバーを作成する方法を示すために、PHP で単純な http サーバーを作成しました。このサーバーはデーモン プロセスとして実行されます。もちろん、PHP を使用してデーモンを作成する方法に重点を置くため、この http サーバーには特定のビジネス ロジックは実装しませんでしたが、指定されたポートをリッスンし、http リクエストを受け入れ、クライアントに固定テキストを返すことができます。プロセス全体はソケットを通じて実装されます。
コード例
以下は、このプログラムの完全なコードです:
誰もが Unix 環境プログラミングに精通していると思いますので、あまり詳しく説明しません。それはアウトです。簡単に言うと、このプログラムは主に 2 つの部分で構成されています。handle_http_request 関数は、C で記述された tcp サーバーと同様に、ソケットを作成し、バインドし、リッスンし、各接続を処理します。クライアントは、接続が受け入れられたら...
上記は、PHP でのデーモン プロセスの記述例の詳細な説明です。詳細については、PHP 中国語 Web サイト (www.php.ん)!