Log E_DEPRECATED ralentit PHP

© Christian PAULUS. Document créé le 30 décembre 2010 , mis à jour le 30 décembre 2010.

Savoir où l'on veut aller, c'est très bien. Mais il faut encore montrer qu'on y va. Emile Zola

Accueil du site > Astuces > PHP > Log E_DEPRECATED ralentit PHP

Optimisation / PHP 5.3.3

Depuis PHP 5.3, l’usage de certaines fonctions dépréciées peut être signalé dans le journal php_error.

Il est probable que ces fonctions ne soient plus utilisées dans la prochaine version majeure de PHP. Il faudra bien s’en occuper un jour ou l’autre.

Mais en attendant, à part remplir les journaux et ralentir l’exécution des scripts, le fait de vous rappeler chaque jour que de longues nuits d’optimisation PHP vous attendent, ça ne sert pas à grand-chose.

Ralentissement des scripts PHP

Voici un petit script de test qui permet de démontrer ce ralentissement :

<?php

if (version_compare(PHP_VERSION'5.3.0''<'))
{
    die(
'Current PHP version: ' PHP_VERSION);
}

$loops 1000;

$string 'This is a test';

function 
deprecated_test($string$loops)
{
    for(
$ii 0$ii $loops$ii++)
    {
        
$null ereg_replace("( )is""\\1was"$string);
    }
}

/**
 * avec E_DEPRECATED
 * */

error_reporting(E_ALL E_NOTICE E_DEPRECATED);

$start microtime(1);

deprecated_test($string$loops);

$res1 microtime(1) - $start;

/**
 * sans E_DEPRECATED
 * */
error_reporting(E_ALL E_NOTICE);

$start microtime(1);

deprecated_test($string$loops);

$res2 microtime(1) - $start;

/**
 * Résultats
 * */
echo(
    
'<ul>'
    
'<li>' $res1 ' (avec activation de E_DEPRECATED)</li>'
    
'<li>' $res2 ' (sans activation)</li>'
    
'</ul>'
    
);

?>

Problème de copier/coller ? Voici le fichier à décompresser :

GZ - 423 octets

Le résultat, ici sur Mac min, mérite attention (moyenne sur 3 appels) :

  • 0.0073070526123 (avec activation de E_DEPRECATED)
  • 0.1898440074921 (sans activation)

sans parler de la rotation des journaux, qui n’est pas mis en place par défaut sur MAMP, et peut-être les autres environnements AMP.

La liste des fonctionnalités obsolètes en PHP 5.3 est présentée sur php.net.

Plussoyez !

Les forums sont fermés.