Mysql bloque au bout de x enregistrements

WRInaute discret
Bonjour à tous


Je recherche activement une solution quand a mon soucis qui est le suivant :

- J'ai un fichier XML de 500mo (c enorme je sais mais je peux pas moins) .
- Mon serveur étant incapable de l'analyser malgré simplexml j'ai donc installé wamp et tenté de l'analyser en local .
- Le fichier devrait sortir environ 20 000 sur 1 table + 1 300 000 sur une 2eme table .
- Le soucis est qu'a partir de 3900 enregistrementssur la table 1 et 280 000 sur la table 2 ben MYSQL bloque ! j'ai cette erreur :

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10048) in
Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to MySQL server on 'localhost' (10048) in
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to MySQL server on 'localhost' (10048) in
Warning: mysql_query() [function.mysql-query]: Can't connect to MySQL server on 'localhost' (10048) in

J'ai pourtant modifié le PHP.INI en mettant des valeurs elevés dans max_time_execution et memory limit a 512m .

Autre chose a modifier pe pour que ca traite ?
 
WRInaute impliqué
Ton serveur PHP peut uploader un fichier de 500Mo???
Sinon si tu as la possibilité de le faire en SSH tu pourrais reduire les risques de problèmes.
 
WRInaute discret
Bha franchement c'est pas des requetes bien lourdes . Y'a juste 2 insert pou insérer dans les deux tables .

Sinon j'utilise une dédié un celeron ac 768mo de ram , c'est quand meme amplement suffisant normalement mais ca plante .

La je fais ca en local avec wamp et ma machine est puissante .

Ce qui est étrange c'est que ca bloque toujours vers le meme nombre d'enregistrements . pas moyen d'aller plus loin .
Y'a pas une conf de mysql a modifier ? ou php ou httpd?

Ca doit pas planter y'a vraiment pas de raison . En plus j'utilise simplexml donc c plutot simple .
 
WRInaute discret
Ce qui me parait bizarre c'est que tu as une erreur sur un mysql_connect() au milieu de ton traitement !
Si tu fait un traitement batch pourquoi il y a une reconnexion à MySQL ?
 
WRInaute discret
Ben voila ca m'a paru aussi étrange y'a pas a ce que ca se deconnecte comme ca .

Je me suis dit que c'etait pe un probleme de wamp mais j'ai rien trouvé .

Mysql bloque pas les connexions a partir de x secondes de script ?

J'ai cette erreu la aussi :

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established

C'est comme si la connexion s'arretait d'un coup a cause d'une raison obscure ...
 
WRInaute discret
L'erreur sur le mysql_connect() vient d'un ordre mysql_connect() dans ton code !

Essaye de voir si tu fais bien qu'une connection à MySQL en début de traitement et qu'une deconnection en fin de traitement !

Deuxio, y a t il d'autres accès à ta base de données pendant le traitement ?
 
WRInaute discret
Je vous remercie bien selectionA m'a mis sur la piste :

J'ai tjrs codé mes scripts avec un maximum de connection/deconnection fin de libérer au maximum mysql et d'otpimiser . J'avais donc fais comme ceci (qui fonctionne bien en php4) :

<?
simple_cml(blablvbala)
foreach (blablabla)
{
traitement flux
connexion sql
traitement sql
deco sql
}

et effectivemment ca faisait planter sql . J'ai doc mis la connec tt en haut et la deco tt en bas .

Je sais pas pk ca marchait pas vu que j'ai tjrs fait comme ca , pe que pr un gros script c mieux ?

Merci a tous

Max
?>
 
Nouveau WRInaute
Ouille Ouille..

Mets toi a la place du serveur ^^

Tu demandes de faire plusieurs milliers de connesions/déconnesions en un temps record.
Il est normal qu'après un certain temps, il est completement largué. (un DoS quoi ^^)

Le mieux est d'ouvrir ta connexion, faire ton traitement (mysql_query()) et quand tout est fini, tu ferme la connexion
 
WRInaute discret
Le système "connexion puis requete SQL puis deconnexion" est utile pour un forum de discussion très fréquenté car cela permet de ne pas avoir trop de connexion simultannée.

Par contre, sur un traitement batch de masse cela n'est pas utile.
 
Discussions similaires
Haut