Page 1 sur 1

probleme d'execution en lot de mysql_query($lsql , $link)

Posté : 25 oct. 2007, 13:44
par aserf
Bonjour,

je suis confronter a un probleme d'insertion de donnée dans la base de donnée,
je fait une boucle et j'execute 410 requette Sql avec "mysql_query($lsql , $link)" et toute ne sont pas executer,

je pensais que certaine requette posais probleme, mais si je relance plusieur fois l'algo (je vide la table avant chaque execution) le nombre de ligne inserer est toujour different, (j'en est 410 a inserer), une fois 158 une fois 351, ... enfin je devient fous,

est ce qu'il existe une maniere particuliere d'inserer des donnée si on veux en executer un grand nombre d'affilé ?

merci,
Seb

Posté : 25 oct. 2007, 14:08
par Tracker
Salut,

Il est très probable que, suivant comment tu fabriques les chaines SQL, les ordres ne soient pas exécutables. Affiche mysql_error(...) si mysql_query('insert...') retourne false, tu auras plus d'info.

Sinon, il est également possible que, si ton script prend trop de temps, php interrompe son exécution. Dans ce cas, tu peux changer le temps max d'exécution via un ini_set(...) en début de script.


Tracker.

Probleme Resolu

Posté : 25 oct. 2007, 18:50
par aserf
Bonjour,

merci, effectivement j'ai changer la valeur, j'ai mis 600 au lieu des 30 d'origine, et maintenant mon scrypte marche, je vais regarder si il est possible de modifier cete valeur sur un serveur mutualise...

Merci encor,

a++
seb

Posté : 26 oct. 2007, 00:17
par Sékiltoyai
Au lieu d'augmenter le timeout, tu devrais plutôt chercher à optimiser ton script. Le fait que tu dépasses le timeout est une indication pour dire que ton script est très gourmand en ressources.

Posté : 26 oct. 2007, 08:05
par zeus
Pour aller dans le sens de Sekiltoyao, sache qu'il est possible de faire un unique insert qui peut insérer plusieurs lignes

Code : Tout sélectionner

INSERT INTO table1(champ1, champ2) VALUES (val1-1, val1-2), VALUES (val2-1, val2-2), VALUES (val3-1, val3-2)
Sachant que le plus gourmand lors de l'appel à mysql_query() n'est pas l'exécution de la requête sur le SGBD, mais les phases de connexion, validation et transmission.