処理途中で結果を出力する

flush()を呼び出すことで出力バッファをフラッシュし、処理途中で結果を出力することができます。PHP: flush - Manual

スクリプトが実行可能な時間

スクリプトが実行可能な時間は制限されており、この時間を超えるとスクリプトは強制的に終了させられます。この時間は既定で30秒であり、長時間の処理を実行するには注意が必要です。

制限時間を超えた際には、次のようなエラーが表示されます。

Fatal error: Maximum execution time of 30 seconds exceeded in C:\index.php on line 10

この制限はset_time_limit()によって、実行可能な秒数を設定することで回避できます。なおゼロ秒とすると時間の制限はなくなります。PHP: set_time_limit - Manual

void set_time_limit ( int $seconds )

なおこの関数を使用するには、セーフモードを無効にする必要があります。そのためにはPHP設定ファイル (php.ini) でsafe_mode = Offとします。

長時間の処理を、途中で結果を出力しながら処理をする例

// 実行時間の制限を無効にする
set_time_limit( 0 );

// 
echo str_repeat( ' ', 1024 );

$index = 0;
while( TRUE )
{
    echo $index++;

    // 出力バッファの内容を送信する
    @ob_flush();
    @flush();

    // プログラムの実行を遅延させる
    sleep( 1 );
}

JavaScriptのコードを出力するようにすると、進捗を見やすく表示できます。

set_time_limit( 0 );

echo '<div id="progress"></div>';
echo str_repeat( ' ', 1024 );

$index = 0;
while( TRUE )
{
    echo '<script type="text/javascript">';
    echo 'document.getElementById( "progress" ).innerHTML = '.$index++;
    echo '</script>';

    @ob_flush();
    @flush();

    sleep( 1 );
}

処理終了時にメッセージを表示する

<body>タグのonloadイベントでメッセージを表示するようにすれば、処理の終了を通知できます。

<body onload="alert( '処理を終了しました。' )">