2012-01-28 8 views
0

昨日、チャットアプリケーションを作成する目的で、PHP/MySQL/JavaScriptだけを使用して、Webサーバーを通じて2つのクライアント間で直接通信チャネルをエミュレートする方法について、友人に尋ねていました。PHPソケット - それらを扱うには何が必要ですか?

彼は、これを行う最善の方法は、私が今まで聞いたことのある用語であるSOCKETSの使用によるものだと言いました。今朝私はチャットアプリケーションを作成する目的でそれを調べ始めましたが、私が望むほど簡単ではないとすぐに考え始めました。

自分のサーバーにアクセスできない(テスト用の共有サーバーにホストされているドメインがある場合)、目標を達成するためにソケットを使用できますか?もしそうなら、どのくらい正確に? (私は全く新しいアイデアだと理解してください) もしそうでなければ、コミュニケーションチャネルを達成するために他の方法はありますか? これまでのところ私の唯一のアイデアは、定期的なリクエスト(AJAX)をアプリケーションが保存されるWebサーバーに送信し、新しいメッセージがあればそれを要求することです。しかし、これは実現可能ではないようです。

ご協力いただきありがとうございます。

答えて

3

私はあなたのチャットサイトのためにあなたの友人がCometを実装しようとしていると思います。

PHPソケットをデーモンとして使うようになっているとすれば、共有ホスティングプロバイダがあなたにそれをさせることは間違いありません。

利用可能なデータがあるまで、PHPスクリプトをハングアップすることができます。しかし、これは、クライアントがまだ接続されているかどうかをPHPサーバが知ることができないため、CGIベースのサーバ上のリソースを素早く消費します。私は経験からこれを知っています。

このような場合は、専用のサーバまたはVPSを入手し、クライアント側とサーバ側のすべての通信上の問題を自動的に処理するsocket.ioなどのバックエンドを作成することを強くお勧めします。リクエストを処理するためにフォークするPHP、MYSQL、およびサーバーは、通常、かなりのオーバーヘッドがありスケーラビリティがないため、Cometを実装する最悪のシナリオです。

独自のCometサーバーを実行する余裕がない場合は、ポーリングだけが選択肢です。これは、最もリソースを集中的に使用し、レスポンスが最も低くなります。

+0

この説明をありがとうございます。私もあまりにもこのコンセプトではあいまいであり、VPSや献身者が必要であるかどうかの確認が私の疑惑を確認しました。 +1 – Phix

+0

介入ありがとう。あなたは私にいくつかの非常に厄介な言葉を投げました:)私はあなたが書いたことの約50%を理解したと思います。しかし、私は少なくとも必要不可欠だと思う:私は本当にVPSまたはnode.jsと一緒にsocket.ioを実行することができる専用サーバーが必要です。 –

関連する問題