「星空の放蕩者」PHP 中国語ドキュメントの例を引用:
チャット ルームは、Web サイト上の退屈な人々のための秘密兵器です。同時に、ウェブマスターやその他の担当者もここで時間を潰すことができます。オンラインで活発な恋愛をしている場合でも、少なくともタイピング速度を上げることはできます。
チャット ルームは、実際には複数の人が使用する CGI プログラムです。プログラムは、各人が入力した文字列を、システムが受信した時刻に従って並べ替えて、各ユーザーに送信します。 Web チャット ルームと BBS チャット ルームの違いは、BBS チャット ルームは受信したすべての文をチャット ルーム内のすべてのインターネット ユーザーに即座に配信できることです。Web CGI プログラムは BBS Telnet 回線のように常に接続できるわけではなく、Web CGI は情報を迅速に送信する必要があります。可能な限り選択してから接続を終了します。この状況は、Web チャット ルームが依然として HTTP 送信プロトコルを使用しているため、HTTP 実装のバージョンが、バージョン 0.9、1.0、または 1.1 のいずれであっても、ネットワーク接続ポートを長時間占有することができないために発生します。
データをすぐに転送できない問題と情報の更新の問題を解決するために、Netscape はブラウザのバージョン 3.0 以降の新しい技術を使用し、Internet Explorer も Netscape が開発したこれらの技術を実装しました。 Netscape では、これをサーバー プッシュとクライアント プルの 2 つのテクノロジーに分割しています。サーバー プッシュでは、Web サーバーからの複数の MIME エンコーディングを使用してユーザーにデータを送信しますが、クライアント プルでは HTML メタ タグと http-equiv="Refresh" 属性を使用します。読み込み時間に関しては、content 属性を使用して実現されます。
タグは通常、
..
のセクションに配置され、ブラウザがユーザー側の Web ページを更新できるようにします。以下は、15 秒ごとにリロードするように設定されたメタと PHP の例です。
">
サーバープッシュまたはクライアントプルを使用しない場合、他の方法はありますかブラウザはチャットできますか? 答えは「はい」です。Java または ActiveX (IE4 および 5 に限定) を使用することも、独自のブラウザ プラグイン プログラム (Qimo のチャット ルームなど) を開発することもできます。 PHPで行います
また、すべてのネチズンのメッセージは定期的に更新されるため、更新によって書きかけの文字列が消去されることを避けるために、次の例のようにチャットルームをフレーム化する必要があります。
/title>
2つのPHPプログラムを作成する場合は、同じディレクトリに置くことをお勧めしますさらに、list.php と post.php に同じ変数を使用するために、次の例では env.inc を /chatroom またはPHP には Web サーバー (Apache など) の設定パスが含まれます
// ファイル名: env.inc
$tempdir="/tmp./"
$chatfile="/tmp/abc"; ?>
システムの効率を重視する場合は、ファイルを使用してチャット コンテンツを投入することもできます。 UNIX のプロセス通信 IPC の使用を検討してください。
このセクションでは、ユーザー コメントの内容をファイルに入れる方法について説明します。ここでの例のほとんどは、UNIX/Linux 外部コマンドを使用します。システムにこのコマンド (またはプログラム) がない場合は、関連するプログラムをご自身でインストールしてください。
実際、データをファイルにスローする方が、データベースを使用するよりも高速です。それでも速度を重視する場合は、UNIX マシンに RAM ディスクをインストールし、ファイルのアクセス パスを RAM ディスクに設定してストレージを確保することができます。速度は厳しい要件を満たすことができます。高速検索エンジンとして宣伝している Web サイトの中には、データベース情報全体を RAM ディスクに保存しているものもあります。これにより、システム速度がすぐに 10 倍から 100 倍向上します。さらに、RAM の価格は他のソリューションに比べて比較的安価です。 Windows NT を使用している場合は、Microsoft が提供するのを待つか、サードパーティ製品を使用するしかありません。
一部のユーザーは UNIX にあまり詳しくないかもしれません。使用するコマンドを簡単に紹介します。
タッチ: 新しいファイルを作成するか、古いファイルの最終更新日を変更します。
echo に 2 つの大なり記号を加えたもの: 文字列表示を指定された場所にリダイレクトします。
tail: ファイル内のデータの最後の数行を表示します。デフォルト値は 10 行で、マイナス記号と数値を使用して表示する行数を変更できます。
以下は、env.inc ファイルを使用してメッセージ文字列を送信および処理するプログラムです。
// 档名: post.php
require("env.inc");
if (($chatuser!="") and ($chattext!="")) {
$chatstr="
".date("h:i:s")."< /font>-".$chatuser.": ".$chattext;
$cmdstr="echo "".$chatstr."" >> ".$chatfile;
if (!file_exists($chatfile)) passthru("touch ".$chatfile);
パススルー($cmdstr);
}
?>
<フォームアクション=メソッド=投稿>
<表の境界=0 width=100%>
DM称: |
|
発行文: |
|
|
フォーム>
プログラム形式は、入力文字があるかどうかを事前に検査し、匿名かつコンテンツの文字列が表示される表 (フォーム) を示し、コンテンツがある場合は文字列とその時刻を (UNIX の変換命令を使用して) 格納します。
">
// 档名: list.php
require("env.inc");
if (!file_exists($chatfile)) {
echo "尚未开张";
終了します。
}
$uniqfile=$tempdir.uniqid(rand());
$shellcmd="/usr/bin/tail -50 ".$chatfile. " > ".$uniqfile;
パススルー($shellcmd);
$chatfilearray=ファイル($uniqfile);
$j=カウント($chatfilearray);
for ($i=1; $i echo $chatfilearray[$j-$i]."
n";
}
リンク解除($uniqfile);
?>
同様に、共有の env.inc も必要であり、変更されるたびに、すべてのプロセスを使用できます。たとえば、Copyright (C) 1996-2000 の文字列を、新しい年に向けて 1 つの変更だけで実行できるようにすることが、ウェブサイトの公開にとって最も重要な方法です。
if (!file_exists($chatfile)) {
echo "尚未开张";
終了します。
}
$uniqfile=$tempdir.uniqid(rand());
$shellcmd="/usr/bin/tail -50 ".$chatfile. " > ".$uniqfile;
パススルー($shellcmd);プログラムは、ユーザーがコンテンツを送信していない/tmp/abc を最初に検査し、ない場合はまだ開始されていないことを示し、ユーザーがコンテンツを送信し、追加で最後の 5 番目のファイルを出力します。
$chatfilearray=file($uniqfile);
$j=カウント($chatfilearray);
for ($i=1; $i echo $chatfilearray[$j-$i]."
n";
}
リンク解除($uniqfile);
プランを配列番号 $chatfilearray に入力し、最後にあるコンテンツが最初に表示される方法で端末に送信します。もちろん、順番に並べる方法を使用できますが、最後に保存されているコンテンツを最後に指定します。この順序は CPU 時間を浪費するために行われるため、最後から最後までエコーするコマンドが使用され、時間をかけて実行されます。
以上は、ソース プログラムのダウンロードに関する内容を含む、単一の PHP 入力ソース プログラムを紹介しました。PHP 教則に関心のある友人の助けになることを望みます。