2012-03-16 17 views
4

Webソケットを使用してPHPソケットサーバーに接続したいと考えています。このサーバーは、データベース内で何かが変更されたかどうかを一定の間隔で確認し、変更をクライアントに送り返す必要があります。したがって、クライアントが接続されているときは、クライアント(この場合はWebブラウザ)がページ上にあるので、接続は開いたままにしておく必要があります。PHPサーバーとWebソケット

次に、サーバーは特定の間隔でデータベースをチェックし、必要に応じてデータを送り返す必要があります。私は問題がWebSocketではないことを知っています(ただし、主要なブラウザではまだサポートされていません)。主に私の懸念はPHPです。私はPHPでサーバーを作成したいと思いますが、私が望むように、長い間、PHPコードへの接続を開いたままにすることはできますか?

間隔はどうですか。通常はC#.NETのexeアプリケーションでは、単にタイマーを作成します。どのようにこれはPHPで行うことができますか?

これがすべて可能な場合は、Apache WebサーバーでPHPコードを実行するだけでよいですか?

+0

websocketは別のプロトコルなので、Apacheで実行することはできません。どうやらhttps://github.com/disconnect/apache-websocketがあります。 – miki

答えて

5

通常、PHPでソケットサーバーを作成する場合は、コマンドラインから実行することをお勧めします。

通常は共有サーバーではないソケットにアクセスする必要があるため、VPSを自分で取得する必要があります。

サーバーを再起動するたびにPHPスクリプトを自動的に起動するファイルをサーバーに設定することをお勧めします。通常、これは/etc/init.dにPHPスクリプトを実行するシェルスクリプトを置いてから、/etc/rc5.dのシェルスクリプトへのシンボリックリンクを置きます(あなたのデフォルトレベルを仮定して)。

また、このサーバーをファイルサーバーとして使用する予定がない場合は、Apacheを実行したくない場合もあります。ソケットサーバ専用に使用する場合は、PHP-CLIをインストールします。これにより、メモリが節約されます。

サーバーに接続しているユーザー間でリアルタイムのやり取りをしようとしている場合は、データベースを使用したくない場合があります。ソケットサーバーには、ソケットサーバーに接続されているすべてのサブスクライバの一覧があります。そのうちの1つがメッセージを送信すると、遅いデータベースに何も格納せずに、そのメッセージを接続されたすべてのサブスクライバにすぐに送信できます。あるいは、あなたがそれを買う余裕があれば、情報をメモリに保存したいと思うでしょう。

socket.ioというすべてのブラウザでサポートされていないソケット用のソリューションがあります。基本的には、サポートされていればブラウザのWebSocketを設定しようとしますが、サポートされていなければ、Flashソケット接続を開始します。どちらの場合でも、同じインターフェースを使って対話します。

ソケットサーバーを作成するための別の言語を検討することもできます。 PHPは実際にこの種のもののために作られていません。特にスケーラビリティが懸念される場合には、Javascriptを使用するとより優れた言語を使用できます。 Node.jsは、ソケットサーバーを非常に簡単に構築できるライブラリであり、スケーラビリティがはるかに優れています。

+0

私の場合はデータベースが必要です。私はすべてをデータベースに保存するのではなく、いくつかの設定を保存しています。 1人のユーザーが設定を変更すると、もう1人のユーザーにできるだけ早く通知する必要があります。だから、DBが必要なときにnodejsが私のためのオプションだとは思わない。しかし、コマンドラインでPHPサーバを動かすことは、私のために十分に聞こえる。私はそれを今すぐ見てみよう – w00

+0

node.jsにはMySqlとDrizzle用のドライバを使ったデータベースアクセスが組み込まれています。すぐに他のユーザーに通知する必要がある場合は、その情報をデータベースに保存するのはなぜですか? 1人のユーザーがあなたにメッセージを送信するとすぐに、その情報を他のユーザーに送信しないでください。ソケットサーバーはWebスクリプトと似ていません。すべての接続されたユーザーが使用している、常に実行中のスクリプトのインスタンスが1つあります。これは、ユーザーが変数内でデータを共有したり、即座にメッセージをリレーすることができることを意味します。 – dqhendricks

+0

http://nodejsdb.org/ – dqhendricks

関連する問題