Je sais qu’il existe des outils tels que pingdom.com et uptimerobot.com qui surveilleront votre site et vous informeront s’ils sont en panne, mais j’aperçois que mon site WordPress connaît une redoutable "erreur d’établissement" une connexion à la base de données "plus souvent que souhaité, et j'aimerais obtenir une sorte de notification lorsque cela se produit (mais pas sous la forme d'une plainte de l'utilisateur!). Pingdom et Uptimerobot ne considèrent pas cette erreur comme une erreur et ne diffusent donc aucune notification.
Existe-t-il des outils ou des méthodes simples permettant de surveiller mon site pour ce problème spécifique (et peut-être d’autres problèmes?) Qui pourraient ne pas être détectés autrement.
[Edit] 1. Je fais spécifiquement référence à la célèbre erreur WordPress qui se produit souvent pour diverses raisons de connectivité à la base de données. Lorsque l'erreur se produit, visiter le site renvoie la page blanche par défaut avec le texte présenté ci-dessous.
Vous pouvez réellement utiliser Pingdom pour rechercher ce type d'erreur, plutôt que de rechercher directement une réponse du serveur. Vous pouvez configurer le contrôle pour rechercher une chaîne particulière sur la page. Par exemple, si votre page contient une sorte de texte cohérent sur la page d'accueil, vous pouvez le rechercher.
Ce message Pingdom contient des informations sur la vérification des chaînes:
Tirez le meilleur parti de votre vérification HTTP: bonne pratique pour les paramètres facultatifs
Vous pouvez également vérifier qu’il n’a pas de chaîne particulière. Vous devriez donc pouvoir le signaler comme étant en panne s’il affiche le texte "Erreur lors de l’établissement d’une connexion à une base de données".
Vous pouvez remplacer le message avec un fichier wp-content/db-error.php
.
Ensuite, dans ce fichier, vous pouvez enregistrer l’erreur ou envoyer un e-mail pour signaler un problème. Je vous recommande de ne pas envoyer d'e-mail à chaque erreur car vous pouvez recevoir beaucoup d'e-mails en quelques secondes.
Comment vous connectez-vous à la base de données? Ne pourriez-vous pas intercepter une exception qui vous envoie un courrier électronique?
Avec WordPress, je suppose que c'est PHP, alors ...
try {
// connect to database
} catch(PDOException $ex) {
$this->output_error_string .= "$ex";
mail(/* send mail */);
}
Il y a probablement plusieurs façons externes de le faire qui ne sont pas spécifiques à WordPress, comme faire un http obtenir une fois par minute (ou plus) de la page d'accueil et vérifier son contenu. peut même être fait à partir d’un hôte local ou d’un hôte différent.
La solution de côté de Wordpress, dans une variante de ce que suggère @sdexp, consiste à remplacer la classe wpdb
en fournissant sa propre implémentation (dans un fichier wpdb.php placé dans/wp-content), qui diffère de la classe principale par l'action en cours lorsque la connexion échoue. Il s’agit bien entendu d’une fourchette souple de wpdb mais cette classe ne change pas beaucoup et avec une utilisation intelligente des méthodes magiques php call
, set
et get
dans votre implémentation, vous pouvez minimiser encore davantage la possibilité d’un futur échec.
Votre meilleur chemin consiste toujours à utiliser un service externe. La surveillance est étonnamment quelque chose qu'il n'est pas facile de faire correctement si vous ne l'avez pas déjà fait. Quel service? StackOverflow ou ServerFault sont probablement de meilleurs endroits pour poser des questions car ce n’est vraiment pas un problème spécifique à Wordpress.