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

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)