プログラムを他の言語にエクスポートすることは、プログラマーが好むことの 1 つであり、WEB 上では、次のような機能があります
2 つの異なるプログラミング環境: HTTP プロトコルの定義に従って、クライアント (ブラウザー) とサーバー側、
クライアント上で他の言語を出力するサーバープログラムを作成できます
。
サーバー側言語と JavaScript がクライアント出力として使用されます。この質問では、
の使用方法を説明します。
このソリューションはクライアント側にデータを保存し、チャット ルーム、ニュース システム、またはその他の任意の場所に表示します
実装されたアプリケーションは、サーバーとクライアント (ブラウザー) 間の最小限のデータ送信を実現します。
サポートのリクエスト:
php4
JavaScript
フレーム
主なアイデア:
私たちは PHP を使用して HTTP プロトコルに基づいたチャット ルーム (HTTP CHAT ROOM) を開発しようとしています
HTTP プロトコルはチャットには適したプロトコルではありませんが、ファイアウォールやプロキシの影響を受けません。
PHP は、JAVA APPLETS を使用せずにこの機能を完全に実装できます。チャット ルームには 2 つの主な問題があります。
まず、IE は SERVER PUSH テクノロジをサポートしていないため、CLIENT PULL テクノロジのみを使用できます (両方
クライアント上で自動的に更新します)、2 番目の問題はさらに深刻です。アイデアはクライアント、サービス
上で更新することであるため、
サーバーは毎回すべてのメッセージを送信する必要があり、これは大量のデータ送信を意味し、これがチャット ルームの遅延の主な原因でもあります
主な理由として、この記事では問題の解決を試みます:
フレームテクノロジー (フレーム) を使用すると、他のページをリロードすることなく、指定したページを更新できます。
サービス/クライアント (C/S) データ送信の量を削減します。私たちのモデルはこのスキームに基づいています。
「マスター」ファイル: フレームワーク構造を定義します
「ローダー」ページ: データをインポートします
「表示」ページ: データを表示します
このソリューションでは、「ローダー」ボックスは「x」秒ごとに自動的に更新されます。アイデアは、データを「マスター」に保存することです
ファイルを使用するため、「loder」ページはクライアントが持っていないデータをサーバーに要求するだけで済みます。タイムスタンプ (タイムスタンプ) を使用します。
各メッセージを記録して、どのメッセージをクライアントに送信する必要があり、どのメッセージを送信してはならないかを判断します。 PHP4.0のセッション管理(セッション)を使用します
クライアントの最終更新タイムスタンプを保存し、サーバーとクライアントの両方からタイムスタンプが見えるようにします。 「ローダー」ファイルの場合
「マスター」ファイルからデータを受信したら (注: 「マスター」ファイルは大きいですが、送信されるのは 1 回だけです)、表示ページ (「diaplay」) を更新します
「表示」ページは、「マスター」ファイル内の「displaymsgs()」という名前の JavaScript 関数を呼び出すだけで、メッセージを表示します。この機能は動的に表示されます
データは「マスター」ファイルに保存されます。一般的なフローチャートは次のとおりです:
1.ブラウザが「マスター」ページ(フレーム)をリクエストし、「マスター」ページがサーバーからクライアント(ブラウザ)に送信され、その後「マスター」
このファイルはフレームワークを生成し、「ローダー」ページと「表示」ページをクライアントに転送します。
2.サーバー側では、「loader」ファイルが分析されます。クライアントが「timestamp」セッション変数を定義していない場合、「loder」ファイルは
サーバーからすべてのデータを取得し、JavaScript コードを生成してデータを「マスター」ファイルに保存し、「タイムスタンプ」変数を
として保存します。
セッション変数。
3. 「loder」ページは、「display」ページを更新するための JavaScript コードを生成します。
4.更新リクエストにより、「表示」ページが「diaplaymsgs()」JavaScript 関数を呼び出してデータを表示します
5. 「x」秒ごとにステップ 2 に戻ります
次のように考えることができます:
================================================= ======
「マスター」ファイル: 非常に大きく、displaymsgs() 関数を定義し、データと初期値を保存します。
「ローダー」ファイル: 小さい、サーバーからデータを取得し、JavaScript コードを生成します
「display」ファイル: 非常に小さく、「master」ファイルの「diaplaymsgs()」関数を呼び出します
================================================= =======
注: 「マスター」ファイルは 1 回だけ送信されます
「loder」ファイルと「display」ファイルは「x」秒ごとに更新されます
「loder」は、初めて送信されるときは非常に大きいかもしれませんが、将来的には非常に小さくなります
「diaplay」ファイルは変更されません
上記のアイデアがまだよくわからない場合は、以下にチャット ルームを設置して方法を詳しく説明します。このチャット ルームは簡単なデモンストレーションのためのものです
したがって、あまり役に立たないかもしれませんが、このアイデアはチャット ルームだけに適用されるものではないことを忘れないでください。 :)
まず、MySQL データベース フォームを使用してください:
============================
テスト可能なテーブルを作成します (
タイムスタンプ日時、
);
============================
「マスター」ファイルは次のとおりです:
================================================
行=新しい配列();
関数 displaymsgs() {
for(i = 0; i< lines.length; i ++){
display.document.write(lines[i]);
display.document.write('
');
}
注: 「フォーム」ファイルはスピーチ ボックスであり、ユーザーに入力スピーチ ボックスを提供します。
「表示」ファイルの内容:
=====================
top.displaymsgs();
====================
「表示」ファイルは小さいですか? :)
「ローダー」ファイル:
====================
session_start(); // ここでセッションを使用します!
If(!isset($timestamp)) {
//「タイムスタンプ」が定義されていない場合は、定義して 0 に設定します
$timestamp=0;
}
$dab=mysql_connect("localhost","user","passWord"); //データベースを開きます
Mysql_select_db("テストベース",$dab);
//クライアントが持っていない情報を見つける
$query="select * from testeable where timestamp>'$timestamp'";
$result=mysql_query($query,$dab);
$msgs=array();
// このループでは、最新のニュース/データを保存し、「タイムスタンプ」を現在の最大値に設定します
while($res=mysql_fetch_array($result)) {
$msgs[]=$res["メッセージ"];
If($res["タイムスタンプ"]>$タイムスタンプ) {
$timestamp=$res["timestamp"];
}
Session_register("timestamp"); // "timestamp" 変数を登録します
エコー '<スクリプト>';
// このループでは JavaScript コードを生成します
// サーバーから取得した最新のデータを「マスター」ページに保存します (注: トップ ウィンドウ (マスター) を指すには「top」を使用します
for($i=0;$i
top.lines[top.lines.length]="";
//次に、「表示」ページを更新する「JavaScript」コードを生成します
?>
top.display.location.reload();
=======================================
「フォーム」ページ:
====================
セッション開始();
If (!isset($timestamp)) {
$timestamp=0;
}
// フォームを表示し、「タイムスタンプ」変数を生成します。
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;
$msgs[]=$res["メッセージ"];
if($res["タイムスタンプ"]>$タイムスタンプ) {
$tt=$res["タイムスタンプ"];
}
}
session_register("タイムスタンプ");
?>
<スクリプト>
for($i=0;$i<$count($msgs);$i++) {
?>
top.lines[top.lines.length]="";
}
?>
top.display.location.reload(); //刷新「表示」页
スクリプト>
}
?>
以上、php のデータ転送の最小化を仲介しました。ゲスト端末でのデータ保存には、ゲスト端末でのデータ保存に関する内容が含まれており、PHP 教則に関心のある友人の助けになることが望ましいです。