Debug PHP – Installer et configurer Xdebug / Webgrind

Xdebug

http://xdebug.org/

Installer l’extension

apt-get install php5-xdebug

Configurer xdebug

find /usr/lib/php5/ -name xdebug.so
/usr/lib/php5/20051025/xdebug.so

/etc/php5/apache2/conf.d/xdebug.ini

#extension = xdebug.so
zend_extension = /usr/lib/php5/20051025/xdebug.so
; Profiling
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = /dev/shm
xdebug.profiler_output_name = cachegrind.out.%t.%p

Webgrind

http://code.google.com/p/webgrind/

Installer

wget http://webgrind.googlecode.com/files/webgrind-release-1.0.zip
unzip webgrind-release-1.0.zip
cd webgrind

Configurer webgrind

config.php
static $profilerDir = '/dev/shm';

En pratique

Activer xdebug sur une page à débuguer

http://url/page.php?XDEBUG_PROFILE=1

Génère un fichier de données à plat de type ASCII text
cachegrind.out.1277111621.4418

Débuguer avec webgrind !

http://url/webgrind/

webgrind génère un fichier binaire de type DBase 3 index file
cachegrind.out.1277111621.4418.webgrind

webgrind charge le fichier .webgrind permettant le profilage du code PHP:

App

Javascript – Debug application en Ajax

Une utilisation originale d’AJAX pour tracker un dysfonctionnement entre le client et votre applicatif.

  • Le javascript code :

  • <script Language="JavaScript">
    var from_time = new Date();
    from_time = from_time.getTime();
    function benchmark_loading_time() {
    var to_time = new Date();
    to_time = to_time.getTime();
    var msecs = (to_time - from_time);
    //submit the result
    var req = null;
    try { req = new XMLHttpRequest(); } catch(e) {}
    if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
    if (!req) try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
    req.open("GET", '/benchmark_loading_time.php?msecs=' + msecs + '&url=' + location.href, false);
    req.send(null);
    }
    </script>

  • L’appel dans l’HTML page:


<body onLoad="benchmark_loading_time()>

  • Cote serveur, le script PHP benchmark_loading_time.php se chargera de jouer avec les paramètres msecs et url

Source : lien

Web

Recent Tweets

Catégories