Quelle est la meilleure façon de vérifier, à partir de PHP, si la connexion à un serveur MySQL va réussir? J'ai vu des solutions qui essayent d'abord d'ouvrir une connexion socket (avec fsockopen
) et de se connecter à MySQL (via n'importe quelle extension que vous utilisez) seulement si la connexion socket a réussi. Je ne suis pas trop sûr à ce sujet puisque vous devez faire deux connexions à chaque fois, est-ce que ça martèle trop le serveur? Mon problème est que si mon serveur MySQL se bloque ou cesse de fonctionner pour quelque raison que ce soit, la page web ne fonctionne plus (elle se charge pendant longtemps et revient en général avec une erreur de timeout de la passerelle 504). Je voudrais afficher un message d'erreur facile à utiliser si MySQL n'est pas disponible. Cela permettrait également, espérons-le, d'éviter que MySQL soit encore plus malmené s'il est déjà en difficulté, car les nouveaux clients ne s'y connecteront pas tant que le serveur n'aura pas redémarré. J'utilise extension MySQLi si cela est pertinent.Vérifiez si le serveur MySQL est capable d'accepter les connexions
Répondre
Ce que votre besoin est le MYSQLI_OPT_CONNECT_TIMEOUT
préciser dans mysqli :: options details
+ 1 cela semble être la bonne chose à modifier. –
Ok, cela permet au temps mort d'arriver plus tôt. Mais je suis toujours inquiet qu'une connexion MySQLi soit plus chère pour un serveur MySQL qu'une vérification 'fsockopen'. Des pensées? –
En utilisant le fsockopen, IMHO - Deux est supérieur à un. – ajreal
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
/*
* This is the "official" OO way to do it,
* BUT $connect_error was broken until PHP 5.2.9 and 5.3.0.
*/
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
/*
* Use this instead of $connect_error if you need to ensure
* compatibility with PHP versions prior to 5.2.9 and 5.3.0.
*/
if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Success... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
Cela me donnera une erreur après l'extension MySqli attendra Dieu sait combien de temps pour essayer de se connecter. J'ai besoin de savoir si je serai capable de me connecter avant de faire un nouveau MySqli ... –
- 1. Vérifiez si un serveur SQL est disponible par programmation?
- 2. Vérifiez si le programme shell est ouvert
- 3. Vérifiez si le paramètre "LargeAddressAware" est actif?
- 4. Vérifiez si le copier-coller est activé
- 5. iPhone - Vérifiez si le caractère est capital
- 6. Vérifiez si le paquet Python est installé
- 7. Vérifiez si l'utilisateur est connecté
- 8. Vérifiez si UIView est touché?
- 9. Est-il possible d'écrire un serveur de messagerie instantanée en python? (être capable de gérer les connexions lourdes)
- 10. Vérifiez si la connexion est fermée!
- 11. J'ai besoin de trouver les connexions actuelles dans le serveur de serveur mysql log table
- 12. PHP: MySQL si nous ne fermons pas les connexions ouvertes
- 13. Vérifiez si le nom d'utilisateur existe
- 14. Vérifiez si le fichier existe
- 15. Vérifiez si le partage NFS est monté en script python
- 16. Vérifiez si div est le dernier et afficher le bouton
- 17. Vérifiez si le nom d'utilisateur est dans le groupe administrateur
- 18. Erreur Pylons - 'Le serveur MySQL est parti'
- 19. Vérifiez si le service WCF existe
- 20. Vérifiez si une valeur est présente dans une colonne ou non dans le serveur SQL 2005
- 21. Vérifiez si ftp est complet ou non?
- 22. VB Vérifiez si int est vide
- 23. Vérifiez si des conseils est appliqué
- 24. Vérifiez si une date donnée est passée
- 25. Vérifiez si l'adresse mmapée est correcte
- 26. Vérifiez si Yahoo Messenger est installé
- 27. VBA Vérifiez si la variable est vide
- 28. Vérifiez si le serveur SQL (quelle que soit la version) est installé?
- 29. Vérifiez si un fichier est une image
- 30. Vérifiez si le service est en cours d'exécution?
devrait-il pas un temps de tentative de connexion mySQL relativement rapidement en cas d'échec? –
dépend du paramètre connect_timeout – ajreal