Der PHP-Puffer ist standardmäßig aktiviert, seine Standardparameter befinden sich in der Konfigurationsdatei php.ini und der Wert beträgt 4096 Byte. Suchen Sie darin nach dem Konfigurationsparameter „output_buffering“, um die Größe des PHP-Puffers zu ändern.
Entwickler können den PHP-Puffermechanismus in Skripten auch manuell über die Funktion ob_start()
verwalten. Auf diese Weise werden die Daten nicht an den Browser übertragen, selbst wenn der Ausgabeinhalt die Größe der Konfigurationsparameter überschreitet. Stellen Sie den PHP-Pufferraum so ein, dass er groß genug ist. Die Daten werden erst nach der Skriptausführung übertragen abgeschlossen ist oder die Funktion ob_start()
an den Browser gesendet wird. ob_end_flush()
und führen die folgenden Tests durch. Wenn output_buffering
auf 4096 geändert wird, werden weniger Daten ausgegeben, wodurch es kleiner als ein PHP-Puffer wird. Der Code lautet wie folgt: output_buffering
for ($i = 0; $i< 10; $i++) { echo $i . '<br/>'; sleep($i + 1); //}
for ($i = 0; $i< 10; $i++) { echo $i . '<br/>'; flush(); //通知操作系统底层,尽快把数据发给客户端浏览器 sleep($i + 1); //}
$dd if=/dev/zero of=f4096 bs=4096 count=1
for ($i = 0; $i< 10; $i++) { echo file_get_contents('./f4096') . $i . '<br/>'; sleep($i +1); }
, und die Ausgabedaten sind größer als ein PHP-Puffer. Dieses Mal rufen wir output_buffering=4096
auf, der Code lautet wie folgt: ob_start()
ob_start(); //开启PHP缓冲区 for ($i = 0; $i< 10; $i++) { echo file_get_contents('./f4096') . $i . '<br/>'; sleep($i + 1); } ob_end_flush();
aufruft, den PHP-Puffer auf eine ausreichend große Größe erweitert und die Daten im PHP-Puffer erst an den Client-Browser gesendet werden, wenn die Funktion ob_start()
oder das Skript aufgerufen wird endet. ob_end_flush
Aktivieren Sie den ob_start
-Mechanismus. Nach der Aktivierung gibt das Skript nicht mehr direkt an den Browser aus, sondern schreibt zunächst vorübergehend in den PHP-Puffer. PHP aktiviert standardmäßig den output_buffering
-Mechanismus und erweitert den output_buffering
-Wert durch Aufrufen der ob_start()
-Funktion auf eine ausreichend große Größe. Sie können auch den Wert von output_buffering
bis $chunk_size
angeben. output_buffering
Der Standardwert ist 0, was bedeutet, dass die Daten im PHP-Puffer erst an den Browser gesendet werden, wenn die Ausführung des Skripts abgeschlossen ist. Wenn die Größe von $chunk_size
festgelegt ist, bedeutet dies, dass die Daten im Puffer an den Browser gesendet werden, solange die Datenlänge im Puffer diesen Wert erreicht. $chunk_size
angegeben wird, z. B. die Funktion $ouput_callback
, die die Daten im Puffer komprimiert, bevor sie an den Browser gesendet wird. Die Funktion ob_gzhandler()
dient dazu, eine Kopie der Daten im PHP-Puffer zu erhalten. Dies ist eine wichtige Funktion. Schauen Sie sich bitte das folgende Beispiel an: ob_get_contents()
<?phpob_start(); ?> <html> <body>today is <?php echo date('Y-m-d h:i:s'); ?> </body> </html> <?php $output = ob_get_contents(); ob_end_flush();echo '<! output>'.$output;?>
Funktion. Beide Funktionen ob_get_contents()
und ob_end_flush()
schalten die Ausgabepufferung aus. Der Unterschied zwischen ob_end_clean()
nur die Daten im PHP-Puffer an den Client-Browser sendet, während ob_end_flush()
die Daten im PHP-Puffer löscht, sie aber nicht an den Client sendet. ob_clean_clean()
Nach dem Aufruf sind die Daten im PHP-Puffer noch vorhanden und ob_end_flush()
kann weiterhin eine Kopie der Daten im PHP-Puffer erhalten. ob_get_contents()
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für Puffer in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!