1

ウェブサイトユーザー向けのメッセージボックスシステムがあると想像してみてください。私がやりたいのは、対象のメンバーが受信トレイにいるときに新しいメッセージがメンバーに送信された場合、彼は受信直後に通知メッセージを見ることができるということです。新しいメッセージ。

これを行うために、setInterval()でjQueryを使用して更新し、新しいメッセージがあるかどうかを確認するためにクエリを送信する "new_messages" divを作成できますが、10.000のメンバーがある場合、10.000のクエリを送信できません。 、これはサーバーを殺す可能性があります!!! hiが新しいメッセージを受け取ったときにのみ、ターゲットメンバーに通知を表示したい。ページに「listen」divを含めることができるようなもので、新しいメッセージがトリガーされたときに起動されます。

MySQLトリガーについても読みましたが、DBに対して別のSQLステートメントを起動し、ユーザーに通知を表示するのに役立たない可能性があるため、これに対する解決策にはならないようです。

では、そのようなシナリオの解決策は何ですか?

前もって感謝します

4

2 に答える 2

2

サーバーからブラウザーにライブ イベントをプッシュする方法については、 PHP Comet システムの質問を参照してください。または、Websockets の使用方法についても詳しく調べてみてください。しかし、これらは PHP ではうまく機能しません。

しかし、ある種のチャットを実装しようとしている場合は、http: //www.phpfreechat.net/ を見てみてください。

于 2012-05-20T10:31:34.790 に答える
1

または、 Long-Pollingを使用することもできますが、PHP はこの問題全体に対する最善の解決策ではないと思います。

ここにある引用で最もよく説明されています

ここにいくつかの理由があります:

PHP は高速実行用に作られています (待機用ではありません) PHP はサーバー側である種のポーリングを強制し、sleep() に依存します PHP は RAM を消費し、リクエストごとにプロセスを生成します (Apache はそうします)

ただし、スリープを使用してデータベースをポーリングすることで、それを行うことができます (キャッシュ APC/Memcache の方が適切です)。

そのようなことをしたい場合は、イベントを処理できるいくつかのテクノロジーに飛び込みます: Python (Tornado、gevent、eventlet、Twisted など)、Ruby (Eventmachine など)、Erlang、Scala、サーバーサイド JavaScript (node.js、 …)、…</p>

質問に対する直接的な回答ではない場合は申し訳ありませんが、純粋な PHP で実行して、その動作 (特に Web サーバー) を確認することをお勧めします。

于 2012-05-20T10:37:47.267 に答える