ホームページ  >  記事  >  バックエンド開発  >  PHP_PHPチュートリアルに基づいたロングコネクションの実装方法と注意点

PHP_PHPチュートリアルに基づいたロングコネクションの実装方法と注意点

WBOY
WBOYオリジナル
2016-07-21 15:10:56858ブラウズ

php は、set_time_limit(0) を通じて PHP スクリプトのタイムアウト制限をキャンセルして、長時間接続の効果を実現できます。

コード例は次のとおりです:

コードをコピーします コードは次のとおりです:

echo "3 秒ごとに出力
";

set_time_limit(0); //php プログラムがタイムアウトして終了しないようにします

ながら(1) {

echo date("H:i:s")."
";

ob_flush();

flash(); //PHP バッファー データを更新して出力します

sleep(3) //3 秒遅延します

}

?>

サンプルコード 2:

コードをコピー コードは次のとおりです:

set_time_limit(0);

header("接続:キープアライブ");

header("プロキシ接続:キープアライブ");

for($i=0;$i<60;$i++) {

print 'text'.$i.'
';

ob_flush();

フラッシュ();

睡眠(1);

clearstatcache();

}


ob_flush(); flash(); がここで呼び出され、ステップが戻る前にデータをブラウザに返すことができるように、出力データをバッファに強制します。さらに、flush と ob_flush の使用には特に起こりやすい間違いがいくつかあり、結果として出力バッファのリフレッシュに失敗します。

1. フラッシュと ob_flush の正しい順序は、次のように、最初に ob_flush、次にフラッシュする必要があります。 ob_flush();

フラッシュ();

WebサーバーのOSがWindowsの場合は、順序を逆にするか、ob_flush()を使用しなくても問題ありません。ただし、Linux システムでは、出力バッファをフラッシュできません。


2. ob_flush() を使用する前に、前のコンテンツのサイズが 4069 文字に十分であることを確認してください。

一部の Web サーバーの Output_buffering はデフォルトで 4069 文字以上になっています。つまり、サーバーが出力バッファをフラッシュする前に、出力コンテンツが 4069 文字に達する必要があります。フラッシュを確実に効果的にするには、次のステートメントを使用するのが最適です。 ob_flush() 関数の前:

print str_repeat(" ", 4096);

Output_buffering 値に達していることを確認します。


コードをコピーします コードは次のとおりです:
for ($i=10; $i>0; $i--)

{

$i をエコーし​​ます。'
';

ob_flush();

フラッシュ();

睡眠(1);

}

ob_end_flush();



http://www.bkjia.com/PHPjc/327001.html

tru​​ehttp://www.bkjia.com/PHPjc/327001.html技術記事 PHP は、set_time_limit(0) を通じて PHP スクリプトのタイムアウト制限をキャンセルして、長時間接続の効果を実現できます。 コード例は次のとおりです。 コードをコピーします。 コードは次のとおりです。 ?php echo "3 秒ごとに出力...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。