私はこれに類似した質問を見つけましたが、具体的なものはありません。 次のコードは、問題を再現する簡略化されたバージョンです。PHPのflush()/ ob_flush()はAndroidブラウザのみでは動作しません
<?php
function addProgressText($texto)
{
echo '<script type="text/javascript">';
echo 'document.getElementById("mensajesEnProgreso").innerHTML += "'.$texto.'";';
echo '</script>';
flush();
ob_flush();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />
<title>TEST - Flush for Android</title>
</head>
<body>
<div id="divEnProgreso">
<p id="mensajesEnProgreso"></p>
</div>
<?php
addProgressText("Init...");
sleep(5);
addProgressText("OK<br>Step 1... ");
sleep(5);
addProgressText("OK<br>Step 2... ");
sleep(5);
addProgressText("OK<br>Step 3... ");
sleep(5);
addProgressText("OK<br>FINISHED");
?>
</body>
</html>
コード予想通りクロム、FirefoxとIE上で(ステップ1ずつ表示)動作しますが、私はAndroidのブラウザからそれを開いたときに、フラッシュが動作しないと、すべてが一度に応じで表示されます完了。
問題の原因に関するヒントはありますか? ありがとう
これはPHPの問題ではないため、ブラウザにはおそらく独自のバッファリングがあり、X文字が出力されるまでテキストを表示できません。 –
私は@Truthのように言っていますが、PHPはバックエンドで動作しており、ブラウザとは何の関係もありません。それらの「睡眠」のステートメントは、しかし、私は全体的に異なるレベルで心配しています。 – Jessedc
@ Jessedcそれはおそらくテストのためですが、好奇心の外に、どうしてそれはあなたを心配していますか? –