O confuzie frecventă în rândul dezvoltatorilor începători este legată de termenul FLUSH și de locul în care acesta își găsește aplicabilitatea: în phpMyAdmin, în limbajul PHP sau direct în serverul de baze de date MySQL.
În interfața phpMyAdmin nu există o funcție de sine stătătoare denumită astfel; phpMyAdmin este doar o interfață grafică pentru administrarea MySQL. Termenul se referă fie la funcția flush() din PHP, fie la comanda SQL FLUSH din MySQL.
1. Comanda FLUSH în MySQL
În MySQL, FLUSH este o instrucțiune administrativă utilizată pentru golirea sau reîncărcarea memoriei cache interne și a tabelelor de sistem. Cea mai des utilizată variantă este:
FLUSH PRIVILEGES;
Când este necesară comanda FLUSH PRIVILEGES?
Atunci când adaugi utilizatori noi sau modifici drepturi de acces direct prin tabelele de sistem (de exemplu, printr-o comandă directă de tip INSERT sau UPDATE în tabela mysql.user), serverul MySQL nu reîncarcă automat noile permisiuni în memorie. Rularea instrucțiunii FLUSH PRIVILEGES; forțează serverul să citească din nou tabelele de privilegii fără a fi nevoie de repornirea serviciului MySQL.
Alte instrucțiuni FLUSH utile în administrarea bazelor de date includ:
-- Închide și redeschide toate tabelele deschise (golește cache-ul de tabele)
FLUSH TABLES;
-- Golește memoria cache pentru interogări
FLUSH QUERY CACHE;
-- Închide și redeschide fișierele de jurnalizare (log-urile)
FLUSH LOGS;
2. Funcția flush() în limbajul PHP
În PHP, flush() are un rol complet diferit: gestionează fluxul de ieșire (output buffering) dintre serverul web și browserul utilizatorului.
În mod implicit, serverul PHP acumulează conținutul generat într-o zonă de memorie tampon (buffer) și îl transmite utilizatorului abia la finalizarea execuției scriptului. Apelarea funcției flush() transmite imediat datele deja procesate către browser, chiar dacă scriptul continuă să ruleze pe server.
<?php
echo "Operațiunea a început...<br>";
ob_flush();
flush();
// Simulare proces de durată
sleep(3);
echo "Operațiunea s-a finalizat cu succes!";
?>
Această tehnică este utilă în operațiunile de lungă durată (exporturi de date, generare de fișiere masive sau actualizări progresive), menținând conexiunea activă și oferind utilizatorului un răspuns vizual în timp real.