Debuguejar codi PHP de servidor

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.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Tags: , ,

1.814 visualitzacions - versió en PDF

Comments are closed.