PHP チャット ルーム テクノロジー Huang Guohui
1.はじめに
オンラインでチャットすることは、今日友達を作る最も人気のある方法です。大手サイトが開設するチャットルームにはそれぞれ特徴があります。
チャット ルームは主に WebChat と BBSChat の 2 種類に分かれます。 BBSChat は Telnet に基づく Tcp プロトコルであり、BBS の追加機能であり、クライアント Telnet プログラムが必要です。 WebChat はブラウザを使用しますが、実際には複数の人が使用する CGI プログラムです。基本原理は、各ユーザーの音声をブラウザを通じてシステムに送信し、システムがそれを収集および処理して特定のユーザーに配信するというものです。
WebChat は通常、サーバー プッシュまたはクライアント プル テクノロジーを使用します。 2 つのテクノロジーの違いは、ユーザーにデータを配布するために異なる方法を使用することです。サーバー プッシュでは、データの複数の MIME エンコーディングを使用して、この方法を使用している Web サイトがほとんどありません。クライアント プルとは、ユーザーが必要なデータをサーバーからプルすることです。
最も一般的に使用されるクライアント プルは、HTML 言語のメタ タグ http-equiv="Refresh" 属性を使用して、サーバー上に新しいデータがあるかどうかを時々チェックすることです。たとえば、ページは 5 秒ごとに更新されます。この方法はシンプルで効果的ですが、更新時にちらつきが発生し、効率を維持するために古いチャットの内容が更新のたびに消去されるため、ユーザーが会話の内容を表示したり保持したりするのが不便になるという欠点があります。 。このため、チャット ルームのフロント エンドとして JavaApplet を使用し、JavaApplet を通じてサーバーから取得したデータを更新を使用して表示することも解決策です。この記事で紹介するチャット プログラムの接続を維持する解決策もあります。方法 1、ブラウザがダウンロード接続状態を維持できるようにチャット プログラムを無限に設定します。方法 2、チャット プログラムに無限ループが発生しますが、より高度な機能を簡単に設定できるため、ここでは採用することを選択します。
Web サーバーは FreeBSD + Apache を使用します。これは、この 2 つの組み合わせが最もパフォーマンスが高く、コストがゼロであるためです。データの保存方法も考慮する必要があります。ファイルを使用することは比較的簡単に実装できますが、複数人で使用する場合、同じファイルに対する頻繁な IO 操作は必然的に効率に影響を及ぼし、FreeBSD の IO パフォーマンスは低くなります。速度を上げるために、RamDisk を使用してファイル全体をメモリに置くことを検討できます。または、データ保存用にメモリ内に高速領域を割り当てます。著者はデータベース方式 MySQL を使用しています。このデータベースは、多数のユーザーが同時に利用できるように設計されているため、高速な空間演算などの複雑なプログラミングが不要となり、速度も保証されます。データベース全体をメモリに配置すると、効果がさらに高まります。
プログラムはPHP+Html+JavaScriptで書かれています。チャットルームは主にHtml Form上の様々な要素を操作します。 JavaScriptはオブジェクトベースの言語であり、Html内のさまざまな要素をオブジェクトとして扱うため、各要素が豊富なメソッドや属性を持ち、操作が簡単です。ただし、PHP が処理できるのは、フォームが投稿され、フォーム内の要素が対応する変数に変換された後でのみ、ユーザーが入力したデータです。インタラクティブ性の点では比較的貧弱であるため、JavaScript が使用されます。 PHP を使用する理由は、他の CGI 言語と比較して速度とセキュリティが優れており、開発が容易であるためです。
2. 常に更新されるチャット ルーム
標準のチャット ルーム ページは、オンライン ユーザーを表示するオンライン、ユーザーの音声と機能設定を表示するセイ、チャット コンテンツを表示するリストの 3 つのフレームで構成されます。ユーザーが Say Frame にスピーチの内容を入力し、送信を押すと、データが処理されて Mysql データベースに保存されます。同時に、発言者、チャット パートナー、スピーチの時間も保存されます。ユーザーがチャット ルームに入るとすぐに、Mysql データベースからのユーザーの入場時間よりも長い発言時間がリスト フレームに表示されます。その後の新しい発言内容の表示の鍵は、チャット内容を表示するプログラムが無限ループであることです。
リストフレームプログラムの概要: