4

これはスタックオーバーフローに関する私の最初の質問です。私はただ興味があります..PHPでループを遅らせることは可能ですか? 各結果をブラウザーに出力し、別のループを処理する前に sleep() を使用してスクリプトを一時停止しようとしていますが、機能していません。使用するスクリプトは次のとおりです。

<?php
$n = 1;

while ($n < 10) {
    echo $n."<br />";
    $n++;
    sleep(1);
}
?>

PS: Linux Mint で Firefox と Apache2 を使用しています。

4

2 に答える 2

12

サーバーは通常、出力するのに十分な量になるまでサーバー側スクリプトの出力をバッファリングします。このようなことを試してみてください。出力バッファリングをオフに設定し、バッファを手動でフラッシュすることの組み合わせ。暗黙的なフラッシュ行と、flush および ob_flush 行に注意してください。

<?php 
@ini_set("output_buffering", "Off");
@ini_set('implicit_flush', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('max_execution_time',1200);


header( 'Content-type: text/html; charset=utf-8' );


echo "Testing time out in seconds\n";
for ($i = 0; $i < 1150; $i++) {
    echo $i." -- ";

    if(sleep(1)!=0)
    {
        echo "sleep failed script terminating"; 
        break;
    }
    flush();
    ob_flush();
}

?>
于 2013-02-23T02:18:17.143 に答える
0

PHP は、ページがそのコンテンツをレンダリングする前に、その出力を完全に実行してレンダリングします。いいえ、必要に応じて PHP ループを遅らせることはできません。

これは JavaScript で行うことができ、行う必要があります。このように遅れてサーバーから情報を出力する必要がある場合は、AJAX を使用して、サーバーから情報が利用可能になったときにプルすることができます。

于 2013-02-23T02:16:39.670 に答える