1 つ目はホーム ページで、テキスト入力とチャット コンテンツを表示する iframe、およびフォームを送信するための非表示の iframe が含まれています: コードをコピー コードは次のとおりです: php //chat.php header('Content-Type: text/html; charset=utf-8'); ;script type="text /javascript"> function submitChat(obj) { document.getElementsByName('content')[0].value = ''; ; iframe> ; もう 1 つは、ユーザーが送信したチャットの内容を保存するだけで、ロックすることは何もしません: コードをコピーします。 : $content = トリム ($_POST['content']); if ($content) { $fp = fopen('./chat.txt', 'a'); fwrite($fp, $content . "n"); fclose($fp); ?> header('cache-control: private'); ('Content-Type: text/html; charset=utf-8'); //テストのタイムアウト設定は 30 秒で、通常は比較的長い時間に設定されます。 set_time_limit(30); //この行は IE の BT を処理します ob_flush(' ', 256); $fp = new SplFileObject('./chat) .txt ', 'r+'); $line = 0; $fp->eof() { $totalLine++; $fp ->next(); $fp->seek($totalLine); while (true) { if (!$fp->eof() ) { if ($content = trim($fp->current())) { echo '' echo ""; () ; $fp->next(); } } else { $fp->next(); { //ここでハートビート検出を追加してループを終了できます} usleep(1000) ?> 一行ずつ説明していきますが、実際はもっと分かりやすいです: 06. タイムアウトを設定する HTTP 接続を長時間維持する必要があるため、この時間はもっと長く、おそらく数時間である必要があります。上記の記事によると、ブラウザの制限により、この種の HTTP 長い接続は 2 つしか開くことができません。また、タイムアウトなしを設定した場合でも、サーバー部分(Apacheなど)の設定ファイルでHTTPリクエストの最大待ち時間が設定されている場合もあるため、一般的にはデフォルトでの効果が期待できない場合があります。 15分のタイムアウト。興味があれば、自分で変更してみることもできます。 09. ここに空白のセクションが出力されていますが、これは主にマニュアルで IE ブラウザが最初の 256 文字を直接出力しないと説明されているため、最初に空白を何気なく出力して以降の内容を出力できるようにし、おそらくその他のブラウザには他のブラウザ用の設定もあります。詳細については、PHP マニュアルの frush 関数の説明を確認してください。次の 11 行と 12 行は、これらの空白文字をブラウザに強制的に出力させるためのものです。 13. ~ 20. ここでの主な目的は、この行の終わりから内容を読み取ることができるようにファイルの行数を計算することです。 以下のwhileループは、ファイルの内容をループで出力するというもので、ユーザーがファイルに書き込みをした場合、その都度、現在の検出は行われません。それ以外の場合は、ポインタを 1 行進めてループを継続し、毎回 1000 マイクロ秒待機します。 39. クライアントが切断されても、長い接続が維持される場合。 、サーバーはクライアントが切断されたことを認識していない可能性があるため、ここで可能です。各ユーザーのハートビートフラグを保持し、最後のハートビート時間を数秒ごとに更新するなど、ハートビートの記録を行う必要もあります。時間が検出され、長期間更新されなかった場合、無限ループが開始され、HTTP 接続が閉じられます。 基本的な原理はこんな感じです、もちろんパフォーマンスは不明ですが、興味があればぜひ試してみてください。 http://www.bkjia.com/PHPjc/320705.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/320705.html技術記事 1 つ目はホームページで、チャット コンテンツを表示するためのテキスト入力と iframe、およびフォームを送信するための非表示の iframe が含まれています。次のようにコードをコピーします。 ?php //chat.php header(... )