Salut
Actuellement j'ai la méthode suivante :
Explication, en phase de développement j'ai ceci :
Par conséquent lorsque j'ai une erreur mysql, j'ai une execption de lancée qui crée un log avec la requête et l'url de la page concernée
Mais en production je devrais mettre ceci :
Par conséquent aucune exception ne sera lancée et aucun log ne sera crée, je n'aurais donc aucun moyen en prod de déterminer si des erreurs mysql ont eu lieu.
Comment faire pour que le log soit bien créé en mode SILENT? Et que je soit bien informé des erreurs.
Sachant que je suis (serais) en mutualisé, et que question logs d'erreurs accessibles et efficace, je crois qu'on reste assez limité.
Actuellement j'ai la méthode suivante :
Code:
public function executerRequete($sql, $params = null) {
$debut = $this->getMicrotime();
try{
if ($params == null) {
$resultat = $this->getBdd()->query($sql); // exécution directe
}
else {
$resultat = $this->getBdd()->prepare($sql); // requête préparée
$resultat->execute($params);
}
}catch (PdoException $e) {
//en cas de commit cette ligne annule tous (transactions)
try {
$this->getBdd()->rollback();
}
catch(Exception $e) {
$message=$e->getMessage();
$objLogs = new Logs();
$objLogs->createLog("erreurspdo", $e->getFile()."\r\n".$e->getMessage()."\r\n".$sql);
die("Désolé une erreur s'est produite au niveau de notre base de donnée. Le problème technique a été transmis et sera corrigé dans les plus brefs délais. <a href=\"".URL_INTER."\">Retour à la page d'accueil</a>");
}
$message="Désolé une erreur s'est produite au niveau de notre base de donnée. Le problème technique a été transmis et sera corrigé dans les plus brefs délais.";
$objLogs = new Logs();
$objLogs->createLog("erreurspdo", $e->getFile()."\r\n".$e->getMessage());
die($message.", <a href=\"".URL_INTER."\">retour à la page d'accueil</a>");
}
$fin = $this->getMicrotime();
$time = $fin - $debut;
if($time>self::TIME_ALERT)
{
$objLogs = new Logs();
$objLogs->createLog("time", $time."\r\nRequête :".$sql."\r\n");
}
return $resultat;
}
Explication, en phase de développement j'ai ceci :
Code:
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
Par conséquent lorsque j'ai une erreur mysql, j'ai une execption de lancée qui crée un log avec la requête et l'url de la page concernée
Mais en production je devrais mettre ceci :
Code:
PDO::ATTR_ERRMODE => ERRMODE_SILENT
Par conséquent aucune exception ne sera lancée et aucun log ne sera crée, je n'aurais donc aucun moyen en prod de déterminer si des erreurs mysql ont eu lieu.
Comment faire pour que le log soit bien créé en mode SILENT? Et que je soit bien informé des erreurs.
Sachant que je suis (serais) en mutualisé, et que question logs d'erreurs accessibles et efficace, je crois qu'on reste assez limité.