Aller au contenu

fsockopen et mysql


thomprofil

Sujets conseillés

Bonjour à tous,

J'ai créé une petite page qui splite mon ecran en 6 blocs iframe.

Ces 6 iframes sont des pages de test de mes 6 serveurs.

Dedans, je teste :

  1. - HTTP
  2. - Mysql
  3. - SSH
  4. - SSL
  5. - FTP

Pour cela, rien de bien méchant, j'utilise fsockopen(), voici une portion du code :

$FTP = _AT_fsockopen(IP_THOR, 21, $errno, $errstr, 1);
$SSH = _AT_fsockopen(IP_THOR, 22, $errno, $errstr, 1);
$HTTP = _AT_fsockopen(IP_THOR, 80, $errno, $errstr, 1);
$SSL = _AT_fsockopen(IP_THOR, 443, $errno, $errstr, 1);
$SQL = _AT_fsockopen(IP_THOR, 3306, $errno, $errstr, 1);

if ($FTP) {
$a++;
fclose($FTP);
} else {
$aError[] = 'FTP';
}

if ($SSH) {
$a++;
fclose($SSH);
} else {
$aError[] = 'SSH';
}

if ($HTTP) {
$a++;
fclose($HTTP);
} else {
$aError[] = 'HTTP';
}

Comme vous le comprendrez, je test chaque port et détermine à la fin si au moins 1 déconne pour me lancer une alerte.

Problème, le test du port 3306 (MySQL) semble poser un souci d'après le prestataire, on a des soucis de processus.

On a au bout d'un moment eu une erreur 1129 sur nos serveurs qui nous empêchait de nous connecter avec SQLYog ou PhpMyadmin mais les sites fonctionnent.

Voici l'erreur :

ERROR 1129: Host 'localhost.localdomain' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts'

Pensez vous vraiement que ce soit le fsocopen alors que je le fclose() proprement ?

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Est-tu certain que le message d'erreur reflète la réalité ?

Souvent, le port 3306 n'est pas accessible au départ d'un autre host que 127.0.0.1 ....

Lien vers le commentaire
Partager sur d’autres sites

Je n'en sais rien mais le prestataire a du supprimer les processus pour que l'on puisse avoir de nouveaux Sqlyog qui fonctionne.

Que cela peut-il être ?

Et est-ce qu'un fsockopen peut créer ce genre de problème ?

Lien vers le commentaire
Partager sur d’autres sites

Hello,

c'est effectivement une sécurité de MySQL : ton fsockopen est considéré comme une tentative de connexion frauduleuse, et est donc blacklisté. Pour corriger ça il suffit de faire un "flush hosts" et non d'aller tuer les processus à l'arrache...

Et pour ne pas provoquer ce problème, bah utilises un "vrai" mysql_connect() plutot qu'un fsockopen. De toutes façons le fait d'ouvrir le port est très loin d'être suffisant pour détecter les problèmes.

J'ai une machine qui plante souvent pour manque de mémoire (un script malfichu), et bien même quand la machine est complètement en rade, tous les ports TCP restent ouverts.

Lien vers le commentaire
Partager sur d’autres sites

Au lieu d'un simple 'mysql_connect', tu créées une table, un champ, et tu appelles ce champs ;)

Là, tu auras non seulement l'accès, mais aussi le temps mis par cette requète ;)

Dans ton cas, peut être que l'ajax serait plus approprié que les iframes ;)

Lien vers le commentaire
Partager sur d’autres sites

Mouais, pour du monitoring MySQL je préfère largement utiliser "show status" et/ou "show variables". Ca n'accède pas aux données, mais au moins ça permet de générer un excellent suivi.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...