最終的に何がしたいのかよく分かりませんが、解説と回答を。
読み込みが終わるまで何も表示されない例 の解説
php
1while ($i <= 5)
2{
3 $num .= $i++;
4 sleep(1);
5}
まず、ここで5秒の処理が入ります。
ブラウザの画面には何も表示しません。
php
1echo $start;
2ob_flush();
3flush();
4echo $num, $end;
$startの中身を出力した後、
ob_flush(),flush()で画面に表示させます。
その後、すぐに$num, $endの中身も表示させますが、
この部分は残りの処理が終わるまで画面表示しない部分ですが、
残りの処理がないため、人の目には全て同時に表示される形になっています。
ためしに、以下のプログラムで実行すれば、分かるかと思います。
php
1echo $start;
2ob_flush();
3flush();
4sleep(3); // 追加
5echo $num, $end;
少なくとも『Start...』だけは、読み込みが終わるのを待たずに表示したい
php
1<?php
2$start = 'Start...';
3$num = '';
4$i = 1;
5// ↓時間のかかる処理を移動
6// while ($i <= 5)
7// {
8// $num .= $i++;
9// sleep(1);
10// }
11// ↑時間のかかる処理を移動
12$end = '...End';
13?>
14<!doctype html>
15<html>
16<body>
17<?php
18echo $start;
19ob_flush();
20flush();
21// ↓時間のかかる処理を移動
22while ($i <= 5)
23{
24 $num .= $i++;
25 sleep(1);
26}
27// ↑時間のかかる処理を移動
28echo $num, $end;
29?>
30</body>
31</html>
文字列演算子の方も順次表示できれば望ましい
php
1<?php
2$start = 'Start...';
3$num = '';
4$i = 1;
5// ↓時間のかかる処理を移動
6// while ($i <= 5)
7// {
8// $num .= $i++;
9// sleep(1);
10// }
11// ↑時間のかかる処理を移動
12$end = '...End';
13?>
14<!doctype html>
15<html>
16<body>
17<?php
18echo $start;
19// ↓時間のかかる処理を移動
20while ($i <= 5)
21{
22 // ↓表示を分割・移動
23 // $num .= $i++;
24 $num = $i++;
25 echo $num;
26 ob_flush();
27 flush();
28 // ↑表示を分割・移動・追加
29 sleep(1);
30}
31// ↑時間のかかる処理を移動
32// ↓表示を分割・移動
33// echo $num, $end;
34echo $end;
35// ↑表示を分割・移動
36?>
37</body>
38</html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。