Come disattivare output buffering in PHP con php.ini
L’output buffering consente di archiviare l’output di PHP in una memoria (ovvero un buffer) invece di trasmetterlo immediatamente al browser o al terminale. Una delle funzionalità di PHP che può essere utilizzato per migliorare le prestazioni delle applicazioni web riducendo il numero di richieste del server. Tuttavia, in alcuni casi, il buffering dell’output può causare problemi come ritardi nella visualizzazione del contenuto o rendering incompleto della pagina. Disabilitare il buffering dell’output in PHP può aiutare a risolvere questi problemi.
Il buffering dell’output non influisce sulle intestazioni HTTP, vengono elaborate in modo diverso. Tuttavia, a causa del buffering è possibile inviare le intestazioni anche dopo l’invio dell’output, poiché è ancora nel buffer. Tuttavia, non dovresti fare affidamento su questo effetto collaterale, perché non c’è certezza quando l’output supera la dimensione del buffer.
Il buffer può anche migliorare le prestazioni del server quando PHP non invierà ciascuno echo
al browser, ma invierà blocchi di dati più grandi, ad esempio 4 KB. Una volta che la dimensione del buffer supera i 4096 byte, PHP esegue automaticamente flush
, ad es. il buffer viene svuotato e inviato. Lo stesso può essere ottenuto impostando la direttiva output_buffering
, che viene ignorata nella CLI.
In questa guida ti mostreremo come disattivare o disabilitare il buffering dell’output in PHP tramite il file di configurazione php.ini. Questo metodo disabiliterà il buffering dell’output a livello globale per tutti gli script PHP sul server.
Individuare il file php.ini
Il primo passo è individuare il file di configurazione php.ini sul tuo server. La posizione del file può variare a seconda della configurazione del server. Puoi trovare la posizione di php.ini creando un nuovo file PHP con il seguente codice:
<?phpphpinfo(); ?>
Modifica il file php.ini
Una volta individuato il file php.ini, aprilo con un editor di testo. Cerca la seguente riga:
output_buffering = 4096
Questa riga imposta il valore di buffer di output predefinito su 4096 byte. Per disabilitare il buffering dell’output, imposta semplicemente il valore su 0:
output_buffering = 0
Salvare il file e uscire dall’editor di testo.
Disattivare tramite .htaccess
Per disabilitare il buffering dell’output, apri il file .htaccess utilizzando l’editor di file.
Successivamente, aggiungi la seguente riga:
php_value output_buffering Off
Riavviare il server
Dopo aver modificato il file php.ini, è necessario riavviare il server Web affinché le modifiche abbiano effetto. Il metodo per riavviare il server Web può variare a seconda della configurazione del server.
Test
Per verificare se il buffering dell’output è stato disabilitato, crea un nuovo file PHP con il seguente codice:
<?php
echo “Output buffering disabled”;
?>
Salva il file e aprilo nel tuo browser web. Se il buffering di output è stato disabilitato, dovresti vedere il testo “Buffering di output disabilitato” visualizzato immediatamente senza alcun ritardo. La disabilitazione del buffering dell’output può aiutare a risolvere problemi come ritardi nella visualizzazione del contenuto o rendering incompleto della pagina. Ricordati di riavviare il tuo server web dopo aver modificato il file php.ini affinché le modifiche abbiano effetto.