3

私たちが知るようになる方法/方法はありますか、目的のテーブルに変更が加えられますか?

30 秒ごとにデータベースをチェックする 1 つのソリューションを実装しました。つまり、チャット テーブルで変更が発生した場合は、チャット リストを更新します。多くのパフォーマンスを低下させ、サイトの速度を低下させます。

テーブルに行が挿入されるたびにアクションリスナーが呼び出す方法はありますか?

何か案が?

4

2 に答える 2

3

通知(過去2時間程度の未読メッセージのみが常に含まれる)を含むテーブルを作成してから、変更が発生するたびに新しい通知を作成するトリガー[構文]を作成できます。

CREATE TRIGGER create_notification AFTER INSERT ON chats
FOR EACH ROW INSERT INTO notifications (...) VALUES( NEW.col1, NEW.col2)...

そうすると、データベーステーブルがはるかに小さく(そして高速に)なります。

ソケットサーバーを作成するなどの代替手段がいくつかありますが、データベースをプールするよりもリソース効率が低いと思います。さらに、PHPスクリプトを長時間実行した経験がありません。

于 2012-11-22T10:35:39.470 に答える
2

あなたのシナリオでは、チャットの新しい行がデータベースに挿入された瞬間を追跡するリスナーが必要です。

データベースに挿入する前にユーザーにチャット メッセージを送信すると、簡単になります。

ソケットを使用できます。nodejs+socket.io を使用してこれを実行できます。これについて少し説明します

特定のクライアントにメッセージを送信するための socket.io および node.js

こちらの記事もご覧いただけます

https://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0

于 2012-11-22T10:47:51.957 に答える