Design pattern-urile sunt soluții generale și reutilizabile pentru probleme comune în proiectarea software. În PHP,…

PHP CLI: automatizare și scripturi din linia de comandă
PHP este adesea asociat exclusiv cu dezvoltarea web, dar capacitățile sale de scripting din linia de comandă îl fac un instrument excelent pentru automatizare, procesare de date, sarcini administrative și construirea de unelte CLI. PHP CLI (Command Line Interface) oferă acces la întreg ecosistemul PHP și Composer din terminal, fără overhead-ul unui server web.
Acest ghid explorează cum să folosești PHP CLI eficient.
Bazele PHP CLI: rularea scripturilor
PHP CLI este inclus în orice instalare PHP standard. Comanda php script.php execută un fișier PHP direct în terminal. php -r "echo 'Hello';" execută cod PHP inline. php -a deschide un REPL interactiv pentru experimentare.
Scripturile CLI au acces la argumentele din linia de comandă prin variabila $argv (array cu toate argumentele) și $argc (numărul de argumente). Verificarea că scriptul rulează în CLI și nu în browser se face cu php_sapi_name() === 'cli'.
Dacă ești nou în PHP, citește mai întâi programare PHP orientată pe obiecte.
Funcții esențiale pentru CLI
fgets(STDIN) citește input de la utilizator în mod interactiv. echo și print scriu în STDOUT. fwrite(STDERR, „Eroare”) scrie în STDERR. exit(0) termina scriptul cu cod de succes, exit(1) cu eroare. readline() oferă o interfată mai bogată pentru input cu istoric și completare (necesită extensia readline). Funcțiile de lucru cu fișiere (file_get_contents, file_put_contents, fopen etc.) sunt esențiale pentru procesarea datelor.
Funcționalitățile extinse din PHP 8 simplifică mult scrierea de scripturi CLI – citește ghidul nostru despre PHP 8.
Construirea de comenzi cu Symfony Console
Componenta Symfony Console simplifică enormi construirea de CLI apps profesionale. Instalarea prin Composer (composer require symfony/console) adaugă o structură pentru comenzi cu argumente, opțiuni, output formatat (tabele, progress bars, culori) și help text automat.
Fiecare comandă extinde Command și implementează configure() și execute(). Laravel Artisan este construit pe Symfony Console.
Această abordare structurată este preferabilă pentru scripturi complexe sau distribuite în echipă. Managementul dependențelor cu Composer este esențial – citește ghidul nostru despre Composer.
Automatizarea sarcinilor comune
PHP CLI excelează la automatizarea sarcinilor repetitive care ar consuma timp dacă ar fi executate manual.
Procesarea fișierelor și datelor
Procesarea fișierelor CSV mari, transformarea formatelor de date (JSON, XML, CSV), migrarea datelor între baze de date și generarea de rapoarte sunt cazuri de utilizare perfecte pentru PHP CLI. SplFileObject oferă o interfața OOP pentru lucrul cu fișiere mari fără a le încărca complet în memorie.
League/CSV este o bibliotecă Composer excelentă pentru procesarea CSV. Parsarea XML cu SimpleXML sau DOMDocument este simplă și bine documentată.
Scripturile PHP CLI pot fi combinate cu crontab Linux pentru automatizare programată la intervale regulate.
Interacțiunea cu baze de date din CLI
Scripturile CLI pot interacționa direct cu baze de date prin PDO sau ORM-uri. Migrările de date, curățarea înregistrărilor vechi, generarea de rapoarte și importul de date din surse externe sunt operațiuni tipice.
Utilizarea tranzacțiilor pentru operațiuni de scriere în masă asigură consistența datelor. Logarea progresului și a erorilor în fișiere log permite monitorizarea rulărilor programate.
Optimizarea interogărilor pentru scripturi care procesează milioane de înregistrări necesită atenție specială la indexuri și batch processing – citește ghidul nostru despre gestionarea bazelor de date MySQL.
Apeluri HTTP și integrări API din CLI
Guzzle sau curl nativ permit scripturilor PHP CLI să interacționeze cu API-uri externe. Sincronizarea datelor cu servicii terțe, descărcarea de resurse, trimiterea de notificări și interacțiunea cu platform-uri cloud sunt toate posibile.
Gestionarea rate limiting-ului și a retry logic-ului pentru API-uri este importantă pentru scripturi robuste. Autentificarea OAuth sau prin token trebuie gestionată și reînnoită automat pentru sesiuni lungi.
Securizarea credențialelor API în variabile de mediu sau fișiere de configurare și nu în cod sursă este obligatorie – consultă și ghidul despre securizarea aplicațiilor PHP.
PHP CLI în context Laravel și Artisan
Laravel extinde PHP CLI cu Artisan, oferind un framework complet pentru comenzi personalizate integrate cu aplicația.
Crearea comenzilor Artisan custom
Comanda php artisan make:command NumeComanda generează structura comenzii. Comenzile Artisan au acces la întreaga aplicație Laravel: modele Eloquent, servicii injectate prin DI, queue-uri, mail și orice altceva.
Argumentele și opțiunile se definesc în metoda signature cu sintaxa specifică Artisan. Output-ul formatat cu this->info(), this->error(), this->table() și this->progressBar() face comenzile user-friendly.
Înregistrarea în app/Console/Kernel.php și programarea cu cron este simplă: $schedule->command(‘app:sync-data’)->daily(). Citește mai mult despre comenzile Laravel în ghidul despre introducere în Laravel.
Debugging și performanța scripturilor CLI
Debugging scripturilor CLI se face cu var_dump(), print_r() sau Xdebug configurat pentru CLI. memory_get_peak_usage() monitorizează consumul de memorie. microtime(true) permite profiling-ul timpilor de execuție. Limitele de memorie și timp de execuție pot fi override-uite din CLI cu directivele ini_set() sau flag-urile php -d.
Scripturile long-running trebuie să gestioneze semnalele POSIX (SIGTERM, SIGINT) pentru shutdown elegant, salvând starea și curățând resursele. Monitorizarea scripturilor din producție prin logging structurat și alerting este esențială – citește ghidul despre backup și monitorizare.
PHP CLI transformă PHP dintr-un limbaj web într-un instrument de automatizare versatil. Combinat cu ecosistemul bogat Composer și framework-uri precum Symfony Console sau Artisan, PHP oferă o platformă robustă pentru orice nevoie de scripting și automatizare, de la sarcini simple la pipeline-uri complexe de procesare a datelor.
Despre autor
Dorel Tănase este specialist în optimizarea site-urilor pentru motoarele de căutare. Lucrează în online din 1997 și în SEO din 2007, iar activitatea se desfășoară prin GO SEO MARKETING S.R.L. din Alba Iulia. Se ocupă de audit tehnic, arhitectura site-urilor, conținut și construirea legăturilor.