2009-12-22 7 views
0

J'écris un script en php qui met à jour ma base de données avec certaines informations xml toutes les 30 secondes. (Je ne suis pas autorisé à utiliser un autre langage de script, et je trouve que PHP est un langage facile à utiliser)Désactivation des connexions MySQL en PHP

Cependant, comme ce script php peut fonctionner pendant plusieurs minutes, ma base de données mysql tend à disparaître. Beaucoup. J'ai donc commencé à utiliser des identifiants de lien.
Cependant, lors de la création de plusieurs identifiants, l'autre tombe à nouveau.

donc je pensais que je crée une nouvelle connexion db chaque fois que j'effectuer une requête, en utilisant cette fonction:

function get_db() {

require 'config.php'; // Containing passwords 

$mydb = mysql_connect($db_ip,$db_user,$db_pass) or die('<br>MySQL Error get_db() function: ' . mysql_error() . "</b>\n"); 

mysql_select_db($db_name, $mydb) or die('<br>MySQL Error get_db() function (Kan databank niet benaderen): ' . mysql_error()); 

return $mydb; 

}

Maintenant, mes questions:

  • sur une échelle de 1 à 10, à quel point est-ce une mauvaise idée?
  • même en utilisant cette fonction, il se plaint parfois d'un serveur qui a disparu:
    serveur MySQL est parti
    Ce qui donne? Et quel est le meilleur moyen d'y remédier?
+0

Cela ressemble à un problème de serveur, soit très court "wait_timeout" temps sur le serveur MySQL, ou quelqu'un utilise mal le serveur. Mais un serveur MySQL ne devrait pas "s'en aller" et le temps par défaut pour le faire est de 8 heures, donc je commencerais à enquêter là :) –

+0

La variable "wait timeout" est réglée sur "3.600", je prends ce sont des secondes? Et tels sont pour une heure entière? Je suppose que je vais devoir demander à hostgator ce qu'ils font. – skerit

+0

Vérifiez vos journaux mysql. D'après mon expérience, les connexions mysql sont généralement dues au crash et au redémarrage du serveur mysql - quelque chose que vous devriez éviter si possible. Dans le plus grand schéma, créer une nouvelle connexion pour chaque requête est inefficace, mais si vous ne le faites qu'une fois toutes les 30 secondes, ce n'est pas si grave. –

Répondre

1

Félicitations pour vos solutions de contournement créatives, mais vous devez demander à votre administrateur de serveur pourquoi la connexion est interrompue. Cela ne ressemble pas à un comportement normal.

+0

Ah, je pensais que c'était normal (que j'utilisais php pour quelque chose que ce n'était pas prévu) – skerit

1

S'il s'agit d'un script purement interne, je ne vois aucun problème majeur (généralement permettre aux utilisateurs non fiables de voir les messages d'erreur est une mauvaise idée).

Cela ressemble à un problème de serveur MySQL. En fonction du trafic du serveur, il se peut que le nombre de connexions acceptées par la base de données soit limité.