0

jQuery/AJAX、PHP、および mySQL を使用して、チャット ベースのモバイル アプリケーションを構築しようとしています。新しいチャット メッセージが到着したかどうかを確認するために、クライアント モバイル デバイスがサーバー上の PHP スクリプトを毎秒ポーリングする必要がないようにしたいので、AJAX を使用した「ロング ポーリング」パラダイムを使用して、接続をより長く開いたままにし、より多くのプッシュ スタイルのアーキテクチャを実現します。以下は、サーバー上の PHP コードです。

$newMessage = CheckForNewMessage();
while ($newMessage == NULL) {
  usleep(10000);
  $newMessage = CheckForNewMessage();
}
$response = array();
$response['msg'] = $newMessage;
echo json_encode($response);

ただし、書かれているように、この PHP コードはかなり定期的に mySQL DBMS をポーリングします (依然としてプル パラダイムです)。この接続 (つまり、Web 層とデータ層の間) でプッシュ パラダイムを実現する方法があるかどうか疑問に思っています。新しいメッセージがテーブルに追加されたときにトリガーを使用できますか、またはこれを達成するために同様のものを使用できますか? これを行った経験のある人はいますか?ポインタやアイデアをいただければ幸いです。

4

2 に答える 2

0

MySQL は、この種の通信にはまったく適していません。プッシュ通知をサポートする MS SQL を使用しても、それを使用するのは間違いだと思います。リレーショナル データベースは、データの格納に使用されます。発送不可。

MySQL の代わりに XMPP サーバーまたは (可能でない場合) メッセージ キューを使用することをお勧めします。開始については、 http://php.net/manual/en/function.msg-get-queue.phpを参照してください。

于 2012-07-07T22:06:02.233 に答える
0

理論的には、DB アクションのトリガーとして機能するユーザー定義関数を作成し、(ソケットを介して) 外部 PHP スクリプトを呼び出すことができます。

しかし、この PHP スクリプトがコードとどのようにやり取りする必要があるかということで、まだ競合が発生すると思います。問題は、アーキテクチャがまだ「プル」指向であることです。このときだけ、定期的な時間枠でプルが実行されます。

于 2012-06-29T19:40:35.443 に答える