2012-08-17 9 views
5

現在、クライアントとサーバー間の通信にWebソケットを使用するPHPアプリケーションを開発中です。私は、スレッド・メカニズム、メモリ管理(循環参照)、または不安定なソケット・ライブラリーの欠如のために、PHPをサーバー・アプリケーションに使用しないでください。PHPを使用したWebsocketサーバー

これまでのところ、すべてがうまくいっています。私はwebsocketライブラリとしてphpwsを使用していますし、異なるデータベースシステムにアクセスするにはDoctrine DBALを使用しています。 PHPはバージョン5.3.8です。サーバーは最大30のクライアントを提供する必要があります。しかし、特に最後の日には、長時間実行されるアプリケーションでPHPの効果がないとの記事がいくつか読んでいます。

私はPHPでウェブソケットを使用し続けるか、サーバサイドアプリケーション全体を再構築する必要があるかどうかは分かりません。私はSocket.IOでPythonを試しましたが、私が期待した結果は得られませんでした。

私は、次のオプションを持っていると思います:

  • そのまますべてを保管してください。
  • アプリケーションでAjaxをSocket.IOと組み合わせて使用​​するようにします。データがサーバーに送信されるときにクライアントのajax呼び出しを呼び出すserversideスクリプトを実行します。

最後の点は非常に興味深いと思いますが、何らかの作業が必要です。サーバーが一度にすべてのクライアント要求を実行するのは問題でしょうか?

お勧めですか? PHPのメモリ管理に問題がありますか(クライアントがサーバーにデータを送信するたびにgc_collectを使用しています)が有効ですか? PHPをサーバとして使用しないという明白な理由(スレッディングはありません...)の他に、他にも理由がありますか?

+0

現在の作業中のデザインをスクラップする必要があるかどうか尋ねていますか?このような質問はここでは本当に有効ではありません。自分でコードを書くべきものを決める必要があります。他にどのようなサーバーサイドの言語がありますか?あなたのコードを書き換えようとすれば、Pythonコードを投稿して誰かが問題を見つけるのを助けることができます。 – xthexder

答えて

4

を期待何didntは作るだろうと思ったのすべての機能を自分で似たようなを試してみましたが、挫折シンドを終了goDaddyのようなホスティングプランを使用していない場合)。

私はそれを使用しており、パフォーマンスは本当に満足です。 私はポート80に自分のphpファイルを提供するapacheサーバを持っており、私のサーバ - クライアント通信はポート8080(dev)または843(prod)上のsocket.ioを実行するNode.jsサーバを使って行われます。

Node.jsはとても軽量で優れたパフォーマンスを備えていますが、サーバーとして実行する必要があります。 Nodejitsu.comはwebsocketプロトコルを利用できるホスティングソリューションで、ベータ版であるため、今でも無料です。 socket.ioを使用してポート80でリッスンする必要があることに注意してください。これはtheyrネットワークの制限です。

ポート80ですべてのページにアクセスしたい場合は、varnishのようなリバースプロキシが必要です。

私はそれが助けてくれることを願っています!良い一日を。

+1

+1最高のパフォーマンスを得るためのsocket.ioを持つNode.jsの場合 –

0

サーバーとしてPHPを使用していないという明白な理由(スレッディングなし、...)の他にも理由がありますか? ?

多くのsocketfunctionsは互いに互換性がなく、デバッグするのは難しいです。

私はそれがある(私は感覚が私はあなたがあなたのサーバー上の別のポート上のノードサーバ上のsocket.ioを実行してみることができます

関連する問題