私は現在、クライアントとサーバーの通信に websocket を使用する PHP アプリケーションを開発しています。PHP は、スレッド化メカニズム、メモリ管理 (循環参照)、または扱いにくいソケット ライブラリがないため、サーバー アプリケーションに使用すべきではないと何度も耳にしました。
これまでのところ、すべてがうまく機能しています。phpws を websocket ライブラリとして使用し、Doctrine DBAL を使用してさまざまなデータベース システムにアクセスしています。PHP はバージョン 5.3.8 です。サーバーは、最大 30 のクライアントにサービスを提供する必要があります。しかし、特にここ数日は、長時間実行されるアプリケーションに対して PHP は効果がないという記事をいくつか読みました。
PHP で websocket を使用し続けるか、サーバー側アプリケーション全体を再構築する必要があるかはわかりません。Socket.IO で Python を試しましたが、期待した結果は得られませんでした。
次のオプションがあると思います。
- すべてをそのままにしておいてください。
- アプリケーションで Socket.IO と組み合わせて Ajax を使用するようにします。たとえば、データがサーバーに送信されるときにクライアントの ajax 呼び出しを呼び出すサーバー側スクリプトを実行します。
最後のポイントはかなり興味深いように思えますが、いくつかの作業が必要になります.. サーバーがすべてのクライアント要求を一度に実行するのは問題でしょうか?
あなたは何をお勧めします?PHP のメモリ管理の問題 (クライアントがサーバーにデータを送信するたびに gc_collect を使用しています) はまだ有効ですか? PHP をサーバーとして使用しない明白な理由 (スレッドがないなど) 以外に、他の理由はありますか?