3

これは少し複雑なので、結論を急ぐのではなく、不明な点があれば遠慮なく質問してください。

基本的に、私は PHP で書かれた websocket サーバーを持っています。Websocket メッセージは非同期であることに注意してください。つまり、クライアントが動作している間 (該当する場合) は、リクエストへの応答に時間がかかる場合があります。

クライアントは、他のサーバー上のファイルへのアクセスをサーバーに要求することになっています。これは、FTP サービスまたは Dropbox の場合もあります。

ここで、2 つの問題に注意してください。接続は共有して再利用する必要があり、サーバーは作業中に実際に「フリーズ」するため、サーバーが「フリーズ解除」した後にすべてのリクエストが処理されます。

したがって、ファイル アクセス (サーバーをフリーズさせる原因) をPHP スレッドにオフロードしないのはなぜでしょうか?

ここでの問題は 2 つあります。

  • メイン スレッド (サーバー) の接続リソースをサブ スレッドで使用できるようにするにはどうすればよいですか (上記のスレッド モデルでは不可能です)。
  • 2 つのスレッドが同じリソースを必要とする場合はどうなるでしょうか? もう一方が完了するまで一方がロックされていればまったく問題ありませんが、まだ問題 1 を解決する必要があります。

おそらく、私の思考回路がすべてめちゃくちゃになっているのではないでしょうか。より良い解決策を見つけられるのであれば、それを聞きたいと思っています。接続リソースをホストする PHP スレッドを用意するというアイデアもありましたが、かなりメモリを消費します。

4

1 に答える 1

5

PHP はスレッドをサポートしていません。PHP の目的は、Web 要求に迅速に応答することです。それが、アーキテクチャが構築された目的です。さまざまなライブラリがスレッドのようなことをしようとしますが、通常は解決するよりも多くの問題を引き起こします。

一般に、目的を達成するには 2 つの方法があります。

于 2012-05-13T23:27:46.807 に答える