Gestion des erreurs de base de données
Lors du développement d’un site, nous voyons toutes les erreurs et les avertissements grâce à un niveau de debug réglé sur 2 dans {app}/config/core.php. Lors de la mise en ligne du site, nous mettons ce niveau à 0, les erreurs deviennent donc invisibles à l’utilisateur. Mais si une erreur SQL survient, cela peut fortement affecter le fonctionnement du site, et nous voulons en être averti immédiatement.
La classe Model possède une méthode de callback, “onError”, appelée automatiquement lorsqu’une opération sur la base de données produit une erreur. Nous allons se servir de cette fonction pour gérer efficacement une erreur SQL.
Si le niveau de debug est à 2, cette fonction ne sert à rien car CakePHP va l’afficher à l’écran. Si le site est en ligne avec le debug à 0, nous allons afficher une page d’erreur plutôt que de laisser le visiteur continuer comme si de rien n’était, et prendre toute mesure utile pour prévenir l’administrateur par email ou protéger l’accès au site le temps que le bug soit corrigé.
Dans {app}/app_model.php :
1 2 3 4 5 6 7 8 9 10 11 12 13 | function onError() { if(Configure::read('debug') < 1) { // prévenir l'administrateur par email, // protéger l'accès au site le temps que le bug soit corrigé, // etc. // Afficher une page d'erreur : $this->requestAction('/pages/db_fatal_error'); } exit; } |
Nous sommes ainsi parés à toute eventualité.
Pierre-Emmanuel Fringant