0

だから私は少し助けが必要です、コードの次の行を実行する前にPHPを待機させるより良い方法はありますか?

私は試した:

$response = $_POST[response];
echo "</br>".$response;
if (strpos($response,'no') !== false) {
    sleep(2);
    echo "</br>";
    echo 'Why not?';
}

しかし、この方法では表示されません。

echo "</br>".$response;

寝る前です。2 秒間スリープしてから、応答を表示します。

$response をエコーするようにするにはどうすればよいですか。2 秒待ってから「Why Not」と言います。

前もって感謝します。

4

3 に答える 3

2

バッファをフラッシュします ( UPDATE ):

<?
$response = $_POST[response];
echo "</br>".$response;
ob_end_flush();
flush();
if (strpos($response,'no') !== false) {
    sleep(2);
    echo "</br>";
    echo 'Why not?';
}
?>

参考文献: http://php.net/manual/en/function.ob-flush.phphttp://php.net/flush

于 2013-07-12T21:07:44.387 に答える
1

結果を表示するには、バッファの内容をフラッシュする必要があります

@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
ob_start();
$response = $_POST[response];
echo "<br />".$response;
ob_flush(); 
flush();
if (strpos($response,'no') !== false) {
    sleep(2);
    echo "<br />";
    echo 'Why not?';
}

http://php.net/manual/en/function.flush.phpに記載されているように、両方ob_flush()を使用していますが、何が機能するかを確認してください。サーバーの設定によっては、使用のみが機能する場合もあります。flush()flush()

gzip/deflate に注意してください。出力ストリームを収縮させることはできず、途中でバッファを出力します。htaccess を使用するか、コードの最初の 2 行を使用してオフにすることができます。

于 2013-07-12T21:06:43.197 に答える
0

スリープ呼び出しの前に出力バッファーがフラッシュされていないようです。Pentium10が指摘しているように、実際にこれを手動で制御できます: https://stackoverflow.com/a/3078873/1461223

于 2013-07-12T21:07:41.213 に答える