ホームページ  >  記事  >  バックエンド開発  >  PHP がブラウザから積極的に切断する_PHP チュートリアル

PHP がブラウザから積極的に切断する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:27:251028ブラウズ

PHP はブラウザから積極的に切断します

私はかつて、ブラウザクライアントが切断されたときのサーバーPHPスクリプトの処理を説明する「PHP接続処理におけるset_time_limit()、connection_status()、およびignore_user_abort()の詳細な分析」という記事をまとめました。

この記事では、サーバー PHP スクリプトがブラウザからアクティブに切断する方法について説明します。主な方法は、http プロトコル ヘッダーで Content-Length と Connection を使用することです。

Content-Length の役割: ブラウザは、指定された Content-Length サイズのメッセージ エンティティを受信した後、サーバーから切断されます。

接続の役割: ブラウザは、接続の Close または Keep-Alive を受信した後、接続を閉じるか、次のリクエストで現在の接続を使用し続けるかを決定します。

/**

*ブラウザから自動的に切断されます

* jiaofuyou

*/

echo '1234567890' //ブラウザへのコンテンツ出力

;

{//コードを切断します

$size=ob_get_length();

header("Content-Length: $size"); //ブラウザがこの長さのデータを受信すると、データを受信しなくなります

header("Connection: Close"); //現在の接続を閉じるようにブラウザに指示します。これは短い接続です

ob_flush();

flush();

}

error_log(date("[Y-m-d H:i:s]")." > "."start" ."n", 3 , "/usr/local/apache2219/logs/php_log");

//切断後に長時間の操作を実行する

睡眠(5);

echo 'test213';//ブラウザが受信できません

error_log(date("[Y-m-d H:i:s]")." > "."end" ."n", 3 , "/usr/local/apache2219/logs/php_log");

//5秒遅れてエラーログが実行されたか確認できます

?>

説明:

1. Content-length を単独で使用する場合、ブラウザは実際に接続を閉じるように指示するだけで、情報の受信を停止します。

2. file_get_contents には Content-Length の指定は意味がありません。使用したい場合は、curl を使用してください。

PHP がコンテンツをブラウザーに継続的に出力したい場合:

「1234567890」をエコー

ob_flush();

flush();

これはすぐにはブラウザに出力されません、このようにすることができます

エコー「1234567890

//改行がある場合はすぐにブラウザに出力されます

ob_flush();

flush();

または:

「1234567890」をエコー

print str_pad("",10000) //十分な内容を出力します

ob_flush();

flush();

http://www.bkjia.com/PHPjc/820410.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/820410.html技術記事 PHP はブラウザからの接続を積極的に切断します。以前、ブラウザ クライアントについて説明する記事「PHP 接続処理における set_time_limit()、connection_status()、およびignore_user_abort() の詳細な分析」をまとめました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。