約30秒以上かかるファイル最適化スクリプトを実装しました。処理中のものを追跡するためにエコーを追加したループがあります。処理中に制御出力が送信される
しかし、ほとんどの場合、プロセスが終了するまで、出力は送信されません。
エコーを終了時と同じように反復で送信するには、これをどうすれば制御できますか?
EDIT:
これは、出力バッファ機能を、暗黙のコードです:
set_time_limit(60);
ini_set("memory_limit", "256M");
$documents = $this->documents_model->get($date1, $date2);
ob_start();
echo '-- Start ' . "<br>\n";
ob_end_flush();
flush();
foreach ($documents as $document) {
ob_start();
echo '-- Processing document ' . $document->id . "<br>\n";
$file = $document->get_file_name();
if (! $file || ! file_exists(DOCUMENT_ROOT . 'documents/' . $file)) {
echo '---- Document ' . $document->id . " has no PDF file yet or it was deleted<br>\n";
$path = $this->documents_model->generatePDF($document);
echo '------ file generated: ' . $path;
}
ob_end_flush();
flush();
}
echo '-- End ' . "<br>\n";
このスクリプトをブラウザまたはcliモードで実行しますか? –
ブラウザから実行中です – user3514092
PHPで 'ob_buffer'をチェックアウトします。スクリプトがそれをするのを待つ代わりに、出力をフラッシュするよう強制することができます。 –