ホームページ > バックエンド開発 > PHPチュートリアル > データ転送を最小限に抑える - クライアントにデータを保存する_PHP チュートリアル

データ転送を最小限に抑える - クライアントにデータを保存する_PHP チュートリアル

WBOY
リリース: 2016-07-21 16:07:47
オリジナル
1015 人が閲覧しました

プログラムを他の言語に出力することは、プログラマが好むことの 1 つです。WEB には
クライアント (ブラウザ) 側とサーバー側の 2 つの異なるプログラミング環境があります。サーバー プログラムを他の言語で出力します。クライアント出力としてサーバー言語と JavaScript を選択しました。この質問では、このソリューションを使用してクライアントにデータを保存し、チャット ルーム、ニュース システム、または実装したいその他のアプリケーションでサーバーとクライアント (ブラウザー) 間の通信を実現する方法を説明します。

次のサポートが必要です:
PHP4
JavaScript
フレーム

主なアイデア:

私たちは PHP を使用して HTTP プロトコルに基づいたチャット ルーム (HTTP CHAT ROOM) を開発しようとしていますが、
HTTP プロトコルはそうではありませんチャット プロトコルには適していますが、ファイアウォールやプロキシの影響を受けません。
PHP は、JAVA APPLETS を使用せずにこの機能を完全に実装できます。
まず、IE は SERVER PUSH テクノロジをサポートしていないため、したがって、CLIENT PULL テクノロジ (つまり、クライアントの自動更新) のみを使用できます。2 番目の問題はさらに深刻です。アイデアはクライアント上で更新することであるため、サーバーは毎回すべてのメッセージを送信する必要があり、これは大量のメッセージを送信することを意味します。この記事では、フレーム テクノロジ (フレーム) を使用すると、他のページをリロードせずに指定したページを更新できるため、サービスや顧客の数が減少します。 /S) データ送信量。私たちのモデルはこのスキームに基づいています。
"master" ファイル: フレームワーク構造を定義します
"loader" ページ: データをインポートします
"display" ページ: データを表示します
このスキームでは、"loder" ボックスは "x" 秒ごとに自動的に更新されます - 私たちのアイデアは、データは「マスター」
ファイルに保存されるため、「ローダー」ページはクライアントが持っていないデータをサーバーに要求するだけで済みます。タイムスタンプ
を使用して各メッセージを記憶し、どのメッセージをサーバーに送信する必要があるかを決定します。クライアントは送信する必要はありません。 PHP4.0 のセッション管理 (セッション) を使用してクライアントの最終更新タイムスタンプ (最終タイムスタンプ) を保存し、タイムスタンプがサーバーとクライアントの両方に表示されるようにします。 「ローダー」ファイル
が「マスター」ファイルからデータを受信すると (注: 「マスター」ファイルは大きいですが、転送されるのは 1 回だけです)、表示ページ (「diaplay」)
と「表示」ページを更新します。このページは、「マスター」ファイル内の「displaymsgs()」という名前の JavaScript 関数を呼び出して、メッセージを表示するだけです。この関数は、「マスター」ファイルに保存されているデータを動的に表示します。以下は一般的なフローチャートです。
1.ブラウザが「マスター」ページ(フレーム)をリクエストし、「マスター」ページがサーバーからクライアント(ブラウザ)に送信され、「マスター」
ファイルがフレームを生成し、「ローダー」と「ディスプレイ」が生成されます。ページはクライアントに転送されます。
2.サーバー側では、「loader」ファイルが分析されます。クライアントが「timestamp」セッション変数を定義していない場合、「loder」ファイルはサーバーからすべてのデータを取得し、データを「master」ファイルに保存され、「timestamp」変数がセッション変数として保存されます。
3. 「loder」ページは、「display」ページを更新するための JavaScript コードを生成します。
4.更新リクエストにより、「表示」ページが「diaplaymsgs()」JavaScript 関数を呼び出してデータを表示します
5. 「x」秒ごとにステップ 2 に戻ります

次のように考えることができます:
============================= == =========================
「マスター」ファイル: 非常に大きく、displaymsgs() 関数を定義し、データと初期値を保存します。
「ローダー」ファイル: 小さい、サーバーからデータを取得し、JavaScript コードを生成します
「ディスプレイ」ファイル: 非常に小さい、「マスター」ファイルの「diaplaymsgs()」関数を呼び出します
========= = ===============================================
注意事項: 「マスター」ファイルは一度だけ転送されます
「loder」ファイルと「display」ファイルは「x」秒ごとに更新されます
「loder」は最初に転送されるときは大きいかもしれませんが、後で小さくなります
「diaplay」ファイル変更はありません

上記の考え方がまだよくわからない場合は、以下にチャット ルームを設けて方法を詳しく説明します。このチャット ルームは単なるデモンストレーションのためのものですので、あまり役に立たないかもしれませんが、間違いなく使用できます。このアイデアは、より複雑なチャット ルームを構築することです。このアイデアはチャット ルームだけを対象としたものではないことに注意してください。 :)

まず、mysql データベース フォームを使用してください:
============================
create table testeable (
timestamp datetime 、
================================================================== )function displaymsgs(){display.document.write( '< br>'); =====================================

「表示」ファイルの内容:
======================
= ================= ==
「表示」ファイルは非常に小さいですか?:)

「ローダー」ファイル:
================================================パスワード "); // データベースを開きます
MySQL_SELECT_DB (" TestBase ", $ DAB);

// クライアントが持っていない情報を見つけます $ quily =" select * from testeable where timestamp & gt; '"; $ result = mysql_query ($ Query, $ dab);
$ msgs = array ();

// このサイクルでは、最新のニュース/データを保存し、「TimestAmp」を現在の最大値に設定します ( $ res = mysql_fetch_array($result))
s["timestamp"]; // サーバーストアから取得した最新のデータを「マスター」ページに配置します (注: 上部のウィンドウを指すには「top」を使用します) (マスター)

「top」を使用して、一番上のウィンドウ (マスター) をポイントします

.lines[top.lines.length]=" ";
「表示」ページを更新するコード? & Gt;
top.display.Location.Reload ();
& lt;/script & gt;

& lt;! 「loader」ページを 4 秒ごとに更新する JavaScript のメソッド -->
"
"
" ===== ==================================

「フォーム」ページ:
" ======== ============
}  

// 显示表单、生成「タイムスタンプ」变量。  
if (isset($msg)) {
$dab=mysql_connect("localhost","root","seldon");  
mysql_select_db("testbase",$dab);  
$query="testeable(timestamp,message) 値に挿入(now(),'$msg')";  
mysql_query($query,$dab);  
// タイムスタンプ後のすべてのメッセージを取得
$query="select * from testeable where timestamp>'$tt'";  
$result=mysql_query($query,$dab);  
$msgs=array();$i=0;$timestamp=0;  
while($res=mysql_fetch_array($result)) {
$msgs[]=$res["メッセージ"];  
if($res["タイムスタンプ"]>$タイムスタンプ) {
$tt=$res["タイムスタンプ"];  
}
}
session_register("タイムスタンプ");  

?>  
<スクリプト>  
for($i=0;$i<$count($msgs);$i++) {
?>  
top.lines[top.lines.length]="";  
}
?>  
top.display.location.reload(); //刷新"display"页
  
}
?>  

"メソッド="投稿">  
メッセージ:  
  
  
================================================ ====
注:「フォーム」の引用交換時に、新しい「表示」画面を上に表示することで、投稿者が上に投稿することができるようにしています。

ご覧のとおり、このチャット ルームは非常にシンプルです。これは顧客/サービス (C/S) データ転送の最小化スキルです。このテクノロジーを使用すると、
データ転送を最小限に抑えることができます。もう一度思い出してください: このテクノロジーはそうではありませんここはチャットルーム用です!
================================================ === ======
上記は win98+apache1.3+php4.03 プラットフォームでテストされました。
ご提案やご質問がございましたら、飛陽コミュニティ (http://feiyschool.51.net) までご連絡ください。
または feiyhy@sina.com にメールをお送りください。
アドバイスをお願いします。ありがとうございます! ... //www.phpbuilder.com

【この記事の著作権は著者とAosuo.comが共有しています。転載する場合は著者と出典を明記してください】



http://www.bkjia.com/PHPjc/315052.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/315052.html技術記事プログラムを他の言語に出力することは、プログラマーが好むことの 1 つです。Web には、HTTP プロトコルの定義によれば、クライアント (ブラウザー) とサーバー側の 2 つの異なるプログラミング環境があります。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート