9

PHPのドキュメントでは、各ob_start()をob_end_flush()で終了する必要があると提案されています。アプリ内のどこでもfirephplogメソッドを使用できるようにするために、サイトの各ページで1つ使用しています。

アプリは正常に動作しますが、私が知らないことが有害である可能性があるものがあるのではないかと思います。

4

3 に答える 3

9

この提案の理由は、関数の1つを使用していないときに、PHPが出力バッファーを暗黙的にフラッシュするためだと思いますob_end_*。エラーではありませんが、予期しないときに問題が発生する可能性があります。PHP-docsは、この種の問題からユーザーを保護しようとします。暗黙的なフラッシュを認識している場合、それはおそらく問題ではありません。

于 2010-11-08T11:43:03.960 に答える
0

出力バッファリングは次のように使用できます

<?php
ob_start();
echo "Some text you want to echo on page!!";
header("Location:somepage.php");
ob_end_flush();
?>

問題は、出力の送信を開始した後、ヘッダーを送信できないことです。これを解決するために、出力をバッファリングします。関数ob_startは、出力バッファリングをオンにします。出力バッファリングがアクティブな間、スクリプトから出力は送信されません(ヘッダーを除く)。代わりに、出力は内部バッファーに格納されます。したがって、エコー出力はバッファリングされます。次に、まだ出力を吐き出していないので、問題なくヘッダーを送信します。最後に、ob_end_flushを呼び出して、内部バッファーの内容をフラッシュし、出力バッファーを停止します。

于 2010-11-08T11:45:21.343 に答える
0

たとえば、ループがある場合、誰かがバッファリングを開始できます。そして、関数を呼び出します。彼がob_end_flushコードを取得しようとすると、コンテンツが収集されます。

于 2010-11-08T11:47:24.483 に答える