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

Petit nouveau ! | 4 Messages

25 oct. 2007, 13:44

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

Eléphant du PHP | 443 Messages

25 oct. 2007, 14:08

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.

Petit nouveau ! | 4 Messages

25 oct. 2007, 18:50

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

ViPHP
ViPHP | 5924 Messages

26 oct. 2007, 00:17

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 oct. 2007, 08:05

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer