2010-08-27 3 views
1

J'utilise un script PHP qui doit s'exécuter de manière continue pendant un long moment (un script de mapping ponctuel) et insérer des données dans une base de données MySQL. Le script fonctionne très bien, mais, par la suite (après une minute ou deux), il obtient une erreur:L'exécution crée "Le serveur MySQL est parti" Erreur

MySQL server has gone away 

J'ai changé les paramètres ini pour les deux délai de connexion mysql, et pour le script php exécuter délai d'attente mais n'ont changé le résultat.

J'ai fait un script TRÈS similaire dans le passé qui avait fonctionné sur le même serveur pendant de longues périodes de temps sans jamais rencontrer cette erreur.

Je vous remercie de votre temps, j'espère que votre aide peut me permettre de résoudre ce problème avec n'importe quel autre scripteur frustré venant à travers ce poste dans le futur.

+0

Quelle est la requête exécutée? –

Répondre

1

Il y a plusieurs raisons pour cela: délai d'attente, grande taille des paquets, etc.

S'il vous plaît vérifier this

0

vérifiez max_allowed_packet sur les paramètres du serveur mysql. Le client ne peut pas envoyer de paquets plus grands que ceux-ci ou le serveur mysql fermera la connexion.

Ceci est uniquement lié aux insertions de données lorsque la chaîne de requête est très longue. Ceci n'affecte pas les SELECTs car le serveur agrandira automatiquement le paquet d'envoi.

Bonne taille serait la taille de vos données multiplié par deux. La multiplication est nécessaire car souvent les données sont échappées avant l'envoi et l'en-tête et le pied de page possible sont ajoutés dans la requête SQL.

L'utilisation du paquet max_allowed serait de contrôler l'utilisation de la mémoire du serveur et de limiter les attaques DoS.

Questions connexes