2012-01-21 17 views
5

私は以前はPHP、jQuery、MySQLを使用している小さなチャットアプリ(これはほとんど動作していました)を持っていました。ユーザーの数は非常に少ない(私の友人だけがそれを使用する)。私はこのために長いポーリング方法を使用しました。HTML5 - 共有ホスティングのWebSocket

今、もっと効率的なので、私はこれにHTML5 Websocketを使用することを考えています。また、私の友人のほとんどがGoogle Chrome(既にHTML5をサポートしています)を使用しています。私は、HTML5ウェブソケットについて語っているチュートリアルを行ってきました。そして私はgithubからphpWebSocketをダウンロードしました。私はコードを通過しました。しかし、readmeファイルによれば、着信接続を待ち受けるPHPページは、コマンドラインから "PHP -q"を使って実行する必要があります。だから、私はこの "q"フラグが何をするのかを調べました。そして、私はそれが静かなモードでページを実行することがわかった。だから、私は静かなモードでこれを実行すると何が起こったのですか?それは無限に続くだろうか?この実行プロセスはシステムリソースに影響しますか?

このPHPページは、常に実行する必要があります。その後、接続のみが受け入れられました。ではない ?

私はHostGatorと共有ホスティングパッケージを持っています。そして彼らはcronジョブも許可します。私の現在のチャットアプリ(長いポーリング方法を使用する)は、すべてのメッセージをデータベースに挿入します。ユーザーがポーリングすると、データベースから新しいメッセージをすべて検索して出力します(存在する場合)。

私はここでちょっと立ち往生しています。 :(

答えて

5

これはコマンドラインから実行する必要がありますが、これは無限に実行されることを目的としているため、サーバー上のソケットにバインドされ、着信接続をリッスンします。 。

「-q」オプションがないなどX-Powered-By: PHPContent-Type: text/htmlなど任意のブラウザヘッダ出力にそれを伝える

PHPはその実行限り、必要とするそれはできるだけ多くのメモリを消費しません。あなたのメモリフットプリントを起動時に何をより多くの接続されたクライアント、より多くのCPU、メモリ、ソケットディスクリプタが使用されます。選択を使用するので、効率的なソケット処理になります。

また、共有ホスティングを使用しているため、おそらくユーザーがポートにバインドして接続をリッスンする機能を持っていない可能性が高いため、これを使用できません。

デモでわかるように、WebSocketを接続するURLはws://localhost:12345/websocket/server.phpです。 WebSocketを使用できるWebサーバーがない場合は、サーバーとして動作し、80以外のポートで待機するphpWebSocketのようなものを実行する必要があります。

+0

感謝:) –

+0

もう一つ質問ことがありますどのように我々はこのWebSocketを一緒にセッションを使用していますか?それともこの場合は不可能なのでしょうか?つまり、ユーザーに関する特定のデータを保存したいと考えています。あるいは、何らかの検証署名をしてください。このためにSESSIONSを使用することは可能ですか?または、** User **クラスに別々のdatamembersを作成してください:https://github.com/esromneb/phpwebsocket/blob/master/websocket.class.php? –

+0

私が知る限り、このシナリオではWebソケットでセッションを使用することはできません。ブラウザはサーバ上のソケットに接続するだけなので、クッキーやセッション機能はありません。 WebSocketが接続すると(セッションクッキーからのセッションIDなど)一旦ログインシーケンスを送信すると、そのユーザーに関する情報を取得できます。ウェブソケットがApache/PHPに統合されるまでは、あなた自身の解決策を考えなければならないと思います。 http://stackoverflow.com/questions/5353362/share-session-id-from-cli-to-browserを参照してください。 – drew010

-3

、コマンドラインを起動するためにcronジョブを使用することができます明確な情報を提供するための

関連する問題