A partir de PHP 5.3 tenim una funció molt pràctica que ens permet debuguejar, especialment al costat servidor.
Es tracta de register_tick_function.
Aquesta funcionalitat ens permetrà fer una crida a tick_handler, cada interval especificat per el número de ticks, i d’aquesta manera podrem tracejar en quin moment peten els programes més difícils de debuguejar o que casquen perquè falla nginx, un altre component o llibreria o perquè s’omple la memòria.
declare(ticks=1); // Una funció que es crida a cada esdeveniment tick function tick_handler() { $st_traces_de_debug = debug_backtrace(); // FileUtils és una classe meva per a treballar en arxius // En aquest cas enregistrarem l'arxiu i el número de línia que s'ha executat correctament FileUtils::setMessageLog($st_traces_de_debug[1]['file'] . ' ' .$st_traces_de_debug[1]['line']); } register_tick_function('tick_handler');
Si us va millor enlloc d’usar un mètode com al meu exemple_ setMessageLog de la classe FileUtils, podeu fer servir una funció disponible al mateix codi com en aquest exemple:
function escriu_a_arxiu_log($s_cadena = '/* res a escriure */', $s_file = '/tmp/carles-debug.log') { $s_datahora = date("Y-m-d h:i:s"); $o_fh = fopen($s_file, 'a') or die("no puc obrir l'arxiu"); fwrite($o_fh, $s_datahora.' '.$s_cadena."\n"); fclose($o_fh); } // Per a invocar la funció escriu_a_arxiu_log('Test');
D’aquesta manera anem enregistrant totes les comandes que s’executen correctament.
Agraïments: Edu.
![]() ![]() | Compartir: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Tags: Articles de Codi Ç, PHP, Programació
2.324 visualitzacions - versió en PDF