ホームページ php教程 php手册 PHP-Push技術によりリフレッシュ機能を実現

PHP-Push技術によりリフレッシュ機能を実現

Jun 21, 2016 am 09:15 AM
content file header quot server

リフレッシュ

サーバープッシュとは少し前に流行った「プッシュ」技術ですが、インターネット上の情報のほとんどは cgi で、フランス語の Web サイトでそのような紹介を時々見かけました。何かを理解するには、彼のプログラムからしか学ぶことができません。学ぶための例を示します。チャット ルームでのデータ送信、Web サイトのニュース更新、その他の頻繁に更新されるページに使用できます。

これまで、更新は主にページにタグを追加することで行われていました。


< META HTTP-EQUIV=REFRESH CONTENT="time;URL=url" >


または、JavaScript のタイムアウト + リロードを使用しますが、この更新方法は時間設定に依存するため、連続したデータを提供できません。判断するのが難しい。サーバー プッシュを使用するサーバーは、クライアントがリクエストを行った後、クライアントとの永続的な接続を確立し、その後、サーバーはクライアントのリクエストに従ってデータ パケットをサーバーに継続的にプッシュします。気付かない遅延により、サーバーの応答とリクエストが同期レベルに達しているように感じられます。

まず例を見てから説明しましょう。

img.php

< ?php
set_time_limit(0);
$file = "./1.jpg";
$sep = "gIrLsKiCkAsSiTsAySsOoNaTsHiRt";
if(ereg(".*MS IE.*" , $HTTP_SERVER_VARS["HTTP_USER_AGENT"])){
//IEブラウザの場合は直接出力して終了します。Header("Cache-Control: no-cache")は試していません。 ;
header("Pragma: no-cache");
header("Content-type: image/jpeg");
header("Content-size: " . filesize($file));
readfile($file) ;
}else{
header("Content-Type: multipart/x-mixed-replace; border=$sep");
//ここが重要です、MIME タイプの説明を見てください

//理解しています
print "- -$sep
";
do{
print "Content-Type: image/jpeg
";
readfile($file);
print "
--$sep
";
flush();
$mt = filemtime ($file);
do{
sleep(1);
clearstatcache();
}while($mt == filemtime($file));
}while(1);
}
? >




これは、画像のコンテンツを継続的に出力する、永続的に実行されるページです (ネットワークが一定の場合)。 次に、Netscape またはその他の IE 以外のブラウザを開いて呼び出しページを表示します。変化はないようです。心配しないでください。次のステップは、画像 1.jpg を変更する方法です。たとえば、時間に応じて 1.jpg をカバーする 2 つの画像を作成します (この方法を使用することもできます)。 1.jpg が変更される限り、コピーして上書きします)。この時点で、呼び出しページの画像が自動的に更新されることがわかります。

使用中に問題が見つかるでしょう:なぜ画像が自動的に更新されないのか。これは、クライアントが一定期間サーバーにリクエストを行っていない、つまりブラウザに新しいコンテンツが一定期間入力されていないため、接続タイムアウトが発生する可能性があるためです。解決策は何でしょうか?上記の FTP 接続方法と同様に、実行ページで空のシグナルをブラウザに追加できます。 do...while(1); の間に print("") を追加します。転送部分については、もっと興味があったので、次の情報を参照してください。

要件
Apache-1.3.14/PHP4.0.3pl1 サーバーおよびさまざまな Netscape クライアントで動作する可能性があります。他のサーバーの組み合わせは Netscape 4.7x および 6.0/Mozilla でテストされました。私の知る限り、Internet Exploiter はユーザーに「MSIE」がある場合はサポートされません。 -エージェント文字列 スクリプトは 1 つの画像を表示して終了します。

Update 20020108: freshmeat を少し調べたところ、IE でストリームを表示できるようにするための Andy Wilcock の Cambozola Java アプレットが見つかりました。現在のバージョンは「名前ベース」の仮想ホストでは動作しませんが、すぐにパッチが提供される予定です。
ソース
ダウンロード

$file = "./latest.jpg";
$sep = "girlLsKiCkAsSiTsAySsOoNaTsHiRt";

if (ereg(".*MSIE.*",$HTTP_SERVER_VARS["HTTP_USER_AGENT"]))
{
# IE の場合は、写真を 1 枚吐き出して終了します
header("Cache-Control: no-キャッシュ");
header("プラグマ: no-cache");
header("Content-type: image/jpeg");
header("Content-size: " . filesize($file));
readfile( $file);
}
else
{
# IE でない場合は、ブラウザに try
header("Content-Type: multipart/x-mixed-replace; border=$sep");
print "--$ sepn";
do {
print "Content-Type: image/jpegnn";
readfile($file);
print "n--$sepn";
flush();
$mt = filemtime($file);
do {
sleep (1);
# 同じ画像は出力されませんtwice.
clearstatcache();
} while ($mt == filemtime($file));
} while (1);
}
?>


あなたのスクリプトで。これにより、ひどいヘッダーが送信されるのが早すぎます。
HTML ページ内のスクリプトを画像であるかのように参照してください:



IE の「革新性」の欠如を補うために、画像を参照するページで次の PHP を使用します:


if (ereg("MSIE",$HTTP_SERVER_VARS["HTTP_USER_AGENT"] )) {
echo "n";
}
?>




このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

紅夢ネイティブアプリケーションのランダムな詩 紅夢ネイティブアプリケーションのランダムな詩 Feb 19, 2024 pm 01:36 PM

オープン ソースの詳細については、次のサイトを参照してください。 51CTO Honmeng 開発者コミュニティ https://ost.51cto.com 実行環境 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. アプリケーションを作成するには、[ファイル] をクリックします。 >新しいファイル ->プロジェクトの作成。テンプレートを選択します: [OpenHarmony] EmptyAbility: プロジェクト名 shici、アプリケーション パッケージ名 com.nut.shici、およびアプリケーションの保存場所 XXX (中国語、特殊文字、スペースは含まれません) を入力します。 CompileSDK10、モデル: ステージ。デバイス

JavaのFile.length()関数を使用してファイルのサイズを取得します。 JavaのFile.length()関数を使用してファイルのサイズを取得します。 Jul 24, 2023 am 08:36 AM

ファイルのサイズを取得するには、Java の File.length() 関数を使用します。ファイル操作を扱うとき、ファイル サイズは非常に一般的な要件です。Java では、ファイルのサイズを取得するための非常に便利な方法、つまり length( ) File クラスのメソッド。この記事では、このメソッドを使用してファイルのサイズを取得する方法と、対応するコード例を紹介します。まず、サイズを取得したいファイルを表す File オブジェクトを作成する必要があります。 File オブジェクトを作成する方法は次のとおりです: Filef

PHP BLOBをファイルに変換する方法 PHP BLOBをファイルに変換する方法 Mar 16, 2023 am 10:47 AM

PHP BLOB をファイルに変換する方法: 1. PHP サンプル ファイルを作成します; 2. 「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })」を通じて} 」メソッドを使用して、Blob をファイルに変換できます。

JavaのFile.renameTo()関数を使用してファイルの名前を変更する JavaのFile.renameTo()関数を使用してファイルの名前を変更する Jul 25, 2023 pm 03:45 PM

Java の File.renameTo() 関数を使用してファイルの名前を変更する Java プログラミングでは、ファイルの名前を変更する必要がよくあります。 Java には、ファイル操作を処理するための File クラスが用意されており、その renameTo() 関数でファイルの名前を簡単に変更できます。この記事では、Java の File.renameTo() 関数を使用してファイルの名前を変更する方法と、対応するコード例を紹介します。 File.renameTo() 関数は、File クラスのメソッドです。

SpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか? SpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか? May 16, 2023 pm 08:38 PM

[SpringBoot] Feign 呼び出しを介してヘッダーのパラメーターを渡す Feign を介してヘッダー パラメーターを渡す方法 問題の説明 Feign を使用して Spring Cloud の別のサービスの API インターフェイスをリクエストする場合、ヘッダーでパラメーターを渡す必要があります。特別な処理が行われると、ヘッダー内のパラメータが失われます。解決策 1: @RequestHeader(name="headerName") を介して渡します。例: Feign は次のように定義されます @FeignClient(name="service-name")pub

Windows サーバーのバックアップをインストール、アンインストール、リセットする方法 Windows サーバーのバックアップをインストール、アンインストール、リセットする方法 Mar 06, 2024 am 10:37 AM

WindowsServerBackup は、WindowsServer オペレーティング システムに付属する機能で、ユーザーが重要なデータとシステム構成を保護し、中小企業、エンタープライズ レベルの企業に完全なバックアップおよび回復ソリューションを提供できるように設計されています。この機能を使用できるのは、Server2022 以降を実行しているユーザーのみです。この記事では、WindowsServerBackup のインストール、アンインストール、またはリセットの方法を説明します。 Windows Server バックアップをリセットする方法 サーバー バックアップで問題が発生したり、バックアップに時間がかかりすぎたり、保存されているファイルにアクセスできない場合は、Windows Server バックアップ設定をリセットすることを検討してください。 Windowsをリセットするには

Linuxヘッダーとはどういう意味ですか? Linuxヘッダーとはどういう意味ですか? Jul 18, 2023 pm 03:34 PM

Linux ヘッダーは、コンテンツに関するメタデータを含めるために使用されるファイルまたはデータ ストリームの先頭を指します。ヘッダー ファイルを正しく記述して使用することで、開発者はシステム リソースをより有効に活用し、コードの可読性と保守性を向上させることができます。

JavaのFile.getParentFile()関数を使用してファイルの親ディレクトリを取得します。 JavaのFile.getParentFile()関数を使用してファイルの親ディレクトリを取得します。 Jul 27, 2023 am 11:45 AM

ファイルの親ディレクトリを取得するには、Java の File.getParentFile() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。ファイルの親ディレクトリを取得する必要がある場合は、Java が提供する File.getParentFile() 関数を使用できます。この記事では、この関数の使用方法とコード例を説明します。 Java の File クラスは、ファイルやフォルダーを操作するために使用される主なクラスです。ファイルのプロパティを取得および操作するための多くのメソッドを提供します

See all articles