これは少し複雑なので、結論を急ぐのではなく、不明な点があれば遠慮なく質問してください。
基本的に、私は PHP で書かれた websocket サーバーを持っています。Websocket メッセージは非同期であることに注意してください。つまり、クライアントが動作している間 (該当する場合) は、リクエストへの応答に時間がかかる場合があります。
クライアントは、他のサーバー上のファイルへのアクセスをサーバーに要求することになっています。これは、FTP サービスまたは Dropbox の場合もあります。
ここで、2 つの問題に注意してください。接続は共有して再利用する必要があり、サーバーは作業中に実際に「フリーズ」するため、サーバーが「フリーズ解除」した後にすべてのリクエストが処理されます。
したがって、ファイル アクセス (サーバーをフリーズさせる原因) をPHP スレッドにオフロードしないのはなぜでしょうか?
ここでの問題は 2 つあります。
- メイン スレッド (サーバー) の接続リソースをサブ スレッドで使用できるようにするにはどうすればよいですか (上記のスレッド モデルでは不可能です)。
- 2 つのスレッドが同じリソースを必要とする場合はどうなるでしょうか? もう一方が完了するまで一方がロックされていればまったく問題ありませんが、まだ問題 1 を解決する必要があります。
おそらく、私の思考回路がすべてめちゃくちゃになっているのではないでしょうか。より良い解決策を見つけられるのであれば、それを聞きたいと思っています。接続リソースをホストする PHP スレッドを用意するというアイデアもありましたが、かなりメモリを消費します。