W3docs

Funzione PHP ob_get_flush(): Tutto Quello che Devi Sapere

Scopri come usare ob_get_flush() in PHP per recuperare i contenuti del buffer di output e inviarlo al browser in un'unica chiamata.

Come sviluppatore PHP, potresti aver bisogno di recuperare i contenuti del buffer di output e svuotarlo allo stesso tempo. La funzione ob_get_flush() è una funzione built-in di PHP che fa entrambe le cose in una singola chiamata: restituisce il contenuto attuale del buffer come stringa e lo invia al livello di output successivo. Questo articolo spiega come funziona, cosa restituisce e quando utilizzarla al posto delle altre funzioni di controllo dell'output.

Cos'è la Funzione ob_get_flush()?

Il buffering dell'output consente a PHP di raccogliere in memoria tutto ciò che viene stampato con echo o print, invece di inviarlo direttamente al browser. Si avvia un buffer con ob_start(), si scrive come al solito, e poi si decide cosa fare con l'output catturato.

ob_get_flush() esegue tre operazioni in un unico passaggio:

  1. Ottiene i contenuti del buffer di output attivo (il più in alto) e li restituisce come stringa.
  2. Svuota quei contenuti — li invia al livello di buffer successivo, o al browser se non esiste un altro livello.
  3. Chiude quel livello del buffer (viene rimosso un livello di annidamento).

Questo la rende una comoda combinazione di ob_get_contents() (lettura) e ob_end_flush() (invio + chiusura).

Sintassi

ob_get_flush(): string|false

Parametri

ob_get_flush() non accetta nessun parametro.

Valore di Ritorno

La funzione restituisce i contenuti del buffer di output più in alto come stringa. Se il buffering dell'output non è attivo (non c'è nessun buffer da svuotare), restituisce false e genera un avviso. Avvia sempre un buffer con ob_start() prima di chiamarla.

Come Usare la Funzione ob_get_flush()

Lo schema è: avviare un buffer, scriverci sopra, poi chiamare ob_get_flush() per catturarlo e rilasciarlo.

<?php

ob_start();
echo "This will be buffered";

// Capture the buffer, flush it to the browser, and close the level.
$output = ob_get_flush();

echo "\nCaptured copy: " . $output;

Output:

This will be buffered
Captured copy: This will be buffered

Qui "This will be buffered" viene raccolto nel buffer invece di essere stampato immediatamente. ob_get_flush() restituisce quel testo (quindi $output ora lo contiene) e allo stesso tempo lo invia al browser — ecco perché la frase appare due volte: una volta dallo svuotamento del buffer, una volta dall'echo finale.

Se il buffering non è attivo quando viene chiamata, si ottiene false:

<?php

$output = ob_get_flush(); // No ob_start() was called

var_dump($output); // bool(false)

ob_get_flush() vs. funzioni correlate

FunzioneRestituisce il contenuto?Invia all'output?Chiude il buffer?
ob_get_flush()Sì (stringa)
ob_end_flush()No (bool)
ob_get_clean()Sì (stringa)No (scartato)
ob_get_contents()Sì (stringa)NoNo

Scegli ob_get_flush() quando vuoi sia conservare una copia dell'output bufferizzato (per registrarlo, ispezionarlo o modificarlo) che inviarlo comunque al browser. Se hai solo bisogno di inviarlo, usa ob_end_flush(); se vuoi recuperarlo senza inviarlo, usa ob_get_clean().

Conclusione

La funzione ob_get_flush() recupera il buffer di output attivo come stringa, svuotandolo e chiudendolo in un'unica chiamata. Comprendendo la sua lista di parametri vuota, il suo valore di ritorno string|false e il suo comportamento di chiusura del buffer, puoi gestire i flussi di output in modo più preciso. Per approfondire, esplora ob_start() per aprire i buffer, ob_get_level() per verificare la profondità di annidamento e ob_flush() per svuotare senza chiudere.

Esercitazione

Pratica
Qual è la funzione di ob_get_flush() in PHP?
Qual è la funzione di ob_get_flush() in PHP?
Was this page helpful?