2017-11-21 7 views
0

私はphp対nodejsを勉強していました。 apache mpm preforkモジュールを考慮している場合、phpは新しいスレッドを生成して各リクエストを処理します。反対側には、Rachet、Elephant.io、phpsocket.io、phpDeamonなどのlibsがあり、これを使ってサーバーのようなnode.jsを作成し、それを使って簡単にチャットアプリを構築することができます。mpm preforkモジュールを使用して、PHPの単一スレッドでクライアント接続を同時に処理できますか?

しかし、どのようにこれらのライブラリは、実際に働いているよりも(作業員やイベントの場合)(preforkのの場合)、異なるプロセスまたは異なるスレッド上の各要求の土地であれば?彼らはコミュニケーションのb/wプロセスやスレッドにIPCを使用していますか?あるいは、実際に何が起こっているのですか?実際の後ろに起こっている

は狂気私を運転しています。これについていくつかの説明が必要です。

答えて

0

phpsocket.ioは、プロセスまたは軽量プロセス(スレッド)を使用しません。それはevent based serverです。

サーバは、単一のスレッドとして実行し、オープン接続の現在のセットに新しい接続/閉じられた接続/活動を待ちます。これらのいずれかが発生すると、適切に応答し、次のイベントを待つために戻ります。

+0

クライアント1がサーバーに接続し、サーバーがイベントループに入ります。クライアント2は接続するので、同じスレッドに接続するか、Apacheは新しいプロセス/スレッドを生成します(Apacheのprefork mpmモジュールの使用を検討しています)? –

+0

いいえ、いいえ、いいえ。 Apacheのリクエストハンドラでマルチクライアントコードを実行しないでください。 Apache以外でPHPで書かれたサーバーを実行するか、Apache内部で一度に1つのクライアントを処理します。 RTFMを使用すると、サーバーの関連機能のほとんどがCLI SAPI以外では使用できないことがわかります。 – symcbean

関連する問題