Ein besserer Weg, dies zu tun, ist die Verwendung der ersten beiden Parameter, die von ob_start
: output_callback
y chunk_size
. Ersteres gibt einen Callback an, um die Ausgabe zu verarbeiten, während sie gepuffert wird, und letzteres gibt die Größe der zu verarbeitenden Ausgabebrocken an.
Hier ist ein Beispiel:
$output_file = fopen('test.html', 'w');
if ($output_file === false) {
// Handle error
}
$write_ob_to_file = function($buffer) use ($output_file) {
fwrite($output_file, $buffer);
// Output string as-is
return false;
};
ob_start($write_ob_to_file, 4096);
include 'test.php';
ob_end_flush();
fclose($output_file);
In diesem Beispiel wird der Ausgabepuffer alle 4096 Bytes geleert (gesendet) (und ein weiteres Mal am Ende durch die ob_end_flush
Aufruf). Jedes Mal, wenn der Puffer geleert wird, wird der Callback $write_ob_to_file
wird aufgerufen und der letzte Chunk übergeben. Dieser wird in test.html geschrieben. Der Callback gibt dann zurück false
, d.h. "diesen Chunk so ausgeben, wie er ist". Wenn Sie die Ausgabe nur in eine Datei und nicht in den Ausgabestrom von PHP schreiben wollen, können Sie stattdessen einen leeren String zurückgeben.
0 Stimmen
Sie meinen, dass test.php (oder das Ergebnis der Auswertung) riesig sein kann?
0 Stimmen
Das Ergebnis der Evaluierung könnte enorm sein.