すべてのプログラマーがやりたいことの 1 つは、プログラムを生成するプログラムを書くことです。 Web では、クライアント (ブラウザ) とサーバーという 2 つの異なる開発環境に直面します。 HTTP プロトコルの定義に従って、クライアント側で実行できる別の言語を使用してプログラムを出力するプログラムをサーバー側で作成できます。サーバー プログラムを作成するには PHP (もちろん) を選択し、クライアント プログラムを作成するには JavaScript を選択しましょう。この記事では、この組み合わせを使用してクライアントにデータを保存し、サーバーとブラウザ間のデータ交換を最小限に抑えて、チャット ルーム、ニュース システム、ニュース システムなどの対話型アプリケーションで使用できるようにする方法を説明します。なんでしょう。
要素:
PHP4
JavaScript
フレーム
アイデア:
PHP で書かれた HTTP チャット ルーム プログラムを一時的に開発してみます。 HTTP はチャットにはあまり適したプロトコルではありませんが、ファイアウォールやプロキシ サーバーの影響を受けず、Java アプレットを必要とせずに PHP の可能性を最大限に活用できます。チャット ルーム プログラムには主に 2 つの問題があります。 1 つ目は、IE が「プッシュ」メソッドをサポートしていないため、完全な「プル」アプリケーションにする必要があることです (クライアントが自動的に更新することを指します)。チャットプログラム用。クライアントのリフレッシュ時間を調整できるようにする予定で、サーバーは過去 x 分以内のメッセージ データを受信するためのサーバー上の関数の結果に基づいてリフレッシュ時間を生成します。 2 番目の問題は解決がより困難です。自動更新方式のため、サーバーは毎回すべての情報をクライアントに送信する必要があり、大量の送信が発生すると推定されます。また、単純なチャット ルーム モデルをシミュレートするために作成したサンプル プログラムでも、これがチャット遅延の主な原因であることが示されました。この記事では、2 番目以降の質問について説明します。
通常モデル:
フレームを使用すると、他のフレームをリロードせずに特定のフレームを更新できます。これは、C/S 送信を最小限に抑えるのに役立ちます。私たちのモデルは次の設計に基づいています:
マスター ファイル。フレーム構造を定義するために使用されます。
フレームファイルをロードします。
フレームファイルを表示します。
私たちの設計では、ロード フレームは「x」秒ごとに自動的に更新されます。そのアイデアは、データをメイン ファイルに保存し、クライアントがまだ受信していないデータをロード フレーム ファイルがサーバーから要求できるようにすることです。私たちはタイムスタンプを使用して、メッセージ、ニュース、または送信できるものをマークします。これにより、どれがクライアントに渡される必要があり、どれがそうでないかを知ることができます。 PHP4 のセッション機能を使用して「最終タイムスタンプ」をクライアントに保存し、サーバーでも表示できるようにします。ロード フレーム ファイルがデータを受信すると、データはメイン ファイルに保存され (メイン ファイルは大きい場合がありますが、転送されるのは 1 回だけであることに注意してください)、その後表示フレーム ファイルが更新されます。さらに最適化するために、このフレームでは単に「表示」JavaScript 関数を呼び出します。この関数はメイン ファイルに保存されているデータを使用します。表示フレームを動的に描画します。この方法を見てみましょう:
ブラウザはメインファイル(フレーム構造)をリクエストします
メインファイルはサーバーから転送され、フレーム構造を定義し、その後、他のフレーム(ロードフレームと表示フレーム)が転送されます。
ロードされたフレーム ファイルはサーバー上で解析され、クライアントに「タイムスタンプ」セッション変数がない場合は、サーバーからすべてのデータを取得し、
データをメイン ファイルに保存するための JavaScript コードを生成します。次に、「タイムスタンプ」セッション変数を設定します。
次に、フレーム ファイルをロードし、クライアントが表示フレーム ファイルを更新できるようにする JavaScript コードを生成します。
この更新により、表示フレーム ファイルは「表示」関数を呼び出し、データに基づいて表示フレームを生成します。
「x」秒ごとに (2) に戻ります
このメソッドの分析は次のとおりです:
3 つのファイルが必要です:
メイン ファイル (大きく、表示コード、保存された変数と初期値が含まれます)
インストール 受信フレーム ファイル (小さい、サーバーからデータを取得し、JavaScript コードを生成するための PHP コードが含まれています)
表示フレーム ファイル (非常に小さい、メイン ファイル内の表示関数の呼び出しが 1 回のみ)
メイン ファイルのみが 1 回転送されます。
フレーム ファイルのロードと表示フレーム ファイルは「x」秒ごとに転送されます。
読み込みフレーム ファイルは、最初に呼び出されたときは大きくなる可能性がありますが、クライアントによってフェッチされていないデータのみが毎回取得されるため、その後は非常に短くなります。
フレームファイルの表示についても同様です。
表示結果をクライアント側で処理するため、サーバーデータの負荷を軽減します。
混乱していますか?例を見てみましょう:
この例では、チャット ルームを構築しましたが、実際には使用できません。「なぜそうしないのか」という質問はしないでください。これをチャット ルームに追加しますか?「またはその機能を追加します」など。このモデルが便利だと思われる場合は、これを使用して要件を満たすのに十分複雑なチャット ルームを構築できますが、チャット ルーム以外にも使用できることに留意してください。