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:
- Ottiene i contenuti del buffer di output attivo (il più in alto) e li restituisce come stringa.
- Svuota quei contenuti — li invia al livello di buffer successivo, o al browser se non esiste un altro livello.
- 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|falseParametri
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 bufferedQui "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
| Funzione | Restituisce il contenuto? | Invia all'output? | Chiude il buffer? |
|---|---|---|---|
ob_get_flush() | Sì (stringa) | Sì | Sì |
ob_end_flush() | No (bool) | Sì | Sì |
ob_get_clean() | Sì (stringa) | No (scartato) | Sì |
ob_get_contents() | Sì (stringa) | No | No |
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.