0

JavaScript と AJAX の練習と学習のために、ブラウザー内 IM クライアント用の JavaScript を作成しています。

表示を更新できるように、メッセージを含む 40 ~ 80 個の SQL エントリの一時ストレージとして使用されているテキスト ファイルのファイル サイズの変化をチェックできるようにする必要があります。

現時点では、setInterval短い PHP スクリプトを使用してファイル サイズの変更を定期的にチェックする関数を使用していますが、これは問題を引き起こす可能性があります。間隔が長すぎると、メッセージが遅延し、間隔が短いと、多くの php を意味します。スクリプトは非常に高速に実行され、サーバー リソースを占有します。

主な関心事がサーバー リソースの使用量を減らすことである場合、これを行う最善の方法は何ですか? (私は一緒にかき集めたかなりローテクな PC (2 GB RAM、2.8 GHz AMD セペロン プロセッサ) からサーバーを実行しています)

できれば、誰かがメッセージを送信することによってトリガーされるAJAXイベントを使用してこれを行いたいと思います.IEユーザーBがEnterキーを押してファイルを編集するイベントをトリガーすると、HTMLファイルを更新するユーザーA側の関数がトリガーされます

何か案は?私は、この特定の問題に対するあらゆる解決策を受け入れます。私が何をしようとしているのかをよりよく理解するために、特定の言語で実現したいことの具体例を挙げました。

JavaScript/PHP 以外でこれを行う方法がある場合は、オプションとしてそれを検討することもできます。

4

2 に答える 2

0

これを PHP で行うのは少し面倒です。サーバーがユーザーに送信する新しいデータを取得するまで HTTP 要求を開いたままにするロング ポーリングのようなことを試すことができます。メッセージが頻繁に送信される場合、これは理想的ではない可能性があります。node.jsなどのイベント駆動型 Web テクノロジーをSocket.IOなどと併用することを検討してください。

いずれにせよ、ほぼリアルタイムでメッセージを取得したい場合は、サーバーとの接続を維持する必要があります。PHP で WebSocketsを使用する方法もありますが、PHP はスクリプトを長期間実行し続けるように設計されていないため、これには最適ではありません ( PHP Websocket サーバーの設定を正確に行うにはどうすればよいですか?も参照してください)。

于 2013-07-21T03:13:31.440 に答える
0

ブラウザと HTTP/AJAX は、一般に「プル」モデルで動作します。ブラウザ/またはAJAXがサーバーにリクエストを送信し、サーバーがレスポンスに応答します。

通常、サーバーがブラウザに接続してイベントを「プッシュ」するための準備はあまりありません。ただし、これは、イベントが発生したときにサーバーがデータを書き込む長時間実行リクエストによってシミュレートできます。

たとえば、これは、10 ~ 30 秒のタイムアウト後に「空」と応答する要求である可能性があります。または、キューにイベントがある場合、サーバーはすぐに応答して返します。


Java サーバーを使用すると、これは簡単に実行できます。私はこれを、数年前の主要な統合プロジェクトでイベント通知に使用して成功しました。

ただし、サーバー全体の状態を維持したり、スレッド/リクエスト間で調整または通信したり、イベントキューを維持したりする機能が PHP でどの程度 (おそらくゼロに近い) あるのかはわかりません。

Tomcat で実行されている Java Web アプリケーションのようなものを調べることができます。必要なのは基本的な web.xml と 1 つのサーブレット クラスだけで、そこからほぼ何でも構築できます。

于 2013-07-21T03:13:39.360 に答える