Longue boucle

Tilix Messages postés 171 Date d'inscription samedi 4 décembre 2004 Statut Membre Dernière intervention 31 août 2009 - 19 févr. 2006 à 03:04
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 22 févr. 2006 à 19:46
Bonsoir à tous,





Voilà mon problème. J'ai des longues boucles WHILE à effectué (+ de
3000 entrées) et malheureusement, quand je charge la page qui possède
cette boucle, elle n'arrive jamais jusqu'au bout (pas mal d'action à
faire pour chaque tour tout de même > 1 dixaine de requete sql...). La page s'arrête de se
charger et ne fini pas la boucle.


Je voudrais savoir comment faire pour que celle-ci soit
entièrement réalisé, et avec encore plus d'entrées aussi. (celà
viendrait-il de l'hebergeur ?)





Merci à tous,





Tilix.

42 réponses

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
19 févr. 2006 à 03:06
3000 entrées * 10 requètes = 30 000 requètes sur un bouclage entier :o :o :o

Il y a un temps limite pour l'exécution d'un script en PHP ==> set_time_limit() dans ton fichier php.ini.
Suffit de changer la. (ca ne marche que si l'hebergeur est un dédié)
0
cs_Arnauti Messages postés 392 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 26 septembre 2009
19 févr. 2006 à 09:56
Et si on écrit sur la page set_limit_time(0) ; ca ne marche pas ?
A++
<hr size="2" width="100%">Si un des membres à poster une reponse qui convient, accepter là !
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
19 févr. 2006 à 11:41
Salut,

le mieux serait de demander moins de requettes... en
gros, soit tu fais une procédure en MYSQL 5, soit tu fais des INNER
JOIN ou des LEFT JOIN, ou alors, tu fais un affichage par pages...


car ton settimelimit ne va pas suffire...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 févr. 2006 à 12:22
30 000 requêtes dépassant les 30 secondes ? Ca fait bcp quand même, il doit y avoir moyen d'optimiser ces requêtes à mon avis, surtout si c'est du select...Et effectivement, 30 000 requêtes sur un bouclage, ou sur une page disons, ça fait aussi beaucoup. ca doit pouvoir se réduire.
Y a un autre truc à faire dans ce cas là : redescendre les infos. je veux dire, parfois, on fait plein de tables, avec des clefs étrangères, etc...et du coup on a bien fait sa structure, et de n'importe où, avec les bons where, on peut récupérer n'importe quoi.
Ben parfois, au lieu de s'appuyer sur les jointures, il vaut mieux redsecendre l'info dans une table, bcp plus bas, pour limiter les requêtes justement.
Par exemple, pour une gestion d'ebntrepôts, sur les emplacements, quand il y a des dizaines de milliers de ces emplacements, c'est peut-être pas mal de redescendre dans la table des stocks, l'info concernant la référence article qui s'y trouve, le client, etc... ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thomvaill Messages postés 366 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 février 2007 2
19 févr. 2006 à 13:52
Si non, ben il faut un programme derrière... (Exemple, programmé en C) qui lui, fait ces requêtes et qui les donnes à PHP.

Je ne sais pas programmer en C, alors je ne pourrais pas t'aider, mais je sais que ça se fait.

Thomvaill
IRC : Thomas (irc.heliosnet.org:6667 #programmation)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
19 févr. 2006 à 13:54
Salut,

"Si non, ben il faut un programme derrière... (Exemple, programmé en C)
qui lui, fait ces requêtes et qui les donnes à PHP."



=> on appelle ça un serveur SQL

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
thomvaill Messages postés 366 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 février 2007 2
19 févr. 2006 à 14:33
Mais non, tu n'as pas compris...

Thomvaill
IRC : Thomas (irc.heliosnet.org:6667 #programmation)
0
thomvaill Messages postés 366 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 février 2007 2
19 févr. 2006 à 14:34
Je voulais dire, un programme en C appelé par un tâche cron (par exemple) et qui executerai les requêtes sql à la place de php.

Thomvaill
IRC : Thomas (irc.heliosnet.org:6667 #programmation)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
19 févr. 2006 à 14:37
lol, j'ai compris, mais il ne servirait à rien !

dans 99% des cas, on ne peut pas exécuter ce style de programmes sur un
serveur, et si l'on peut alors autant utiliser ce programme comme un
cgi ! si on fait du php, c'est pas pour se faire chier avec du C ! et
en plus, ici, le problème ne vient pas de la lenteur de php, mais de la
lenteur de mysql (30 000 requettes...)

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
thomvaill Messages postés 366 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 février 2007 2
19 févr. 2006 à 14:46
Ben non, ça vient de la limite d'execution de PHP...

Après, pour executer ça, il suffit d'avoir un petit shell quelque part... Et tout n'est pas forcément fesable en PHP.

Mais j'ai dis C, comme ça..; après oui en effet le CGI peut etre aussi bien.



Enfin bon, on va s'arreter là si non on va flooder tout le topic.

Thomvaill
IRC : Thomas (irc.heliosnet.org:6667 #programmation)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
19 févr. 2006 à 15:08
Salut,

quel est ton code ? et les structures de tes tables ? qu'on voit si on peut optimiser un peu au moins ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
19 févr. 2006 à 16:34
"

Ben non, ça vient de la limite d'execution de PHP..."
Ca c'est se qui en découle :)

30k de requètes en 30 secondes... c'est que ton site est mal codé.
Requètes mal exploitées...etc...
0
Tilix Messages postés 171 Date d'inscription samedi 4 décembre 2004 Statut Membre Dernière intervention 31 août 2009
19 févr. 2006 à 17:30
Je me suis lancé dans la création d'un site de jeu de construction d'une ville.

Mon site contient plus de 2500 membres actifs.

Tous les jours, ces membres gagnent de l'argent virutel sur ce jeu.



Il y'a une boucle avec les 2500 membres du site.

Dans cette boucle, il y'a une autre boucle d'environ 10 tours (le système cherche sur 10 tables différentes afin de faire un calcul de l'argent que le membre doit gagner. (en fonction des bâtiments qu'il possède))

Soit un total de 25000 requetes.



Le nombre d'inscrit de ce site ne fait qu'augmenter de jour en jour.

Lorsque le site aura atteint encore plus de membre, le nombre de requete sera alors démultiplié.



Je voudrais trouver une solution a ce problème.
0
thomvaill Messages postés 366 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 février 2007 2
19 févr. 2006 à 17:36
Je remet ça avec mon programme en C lol ^^

Faut que tu fasses un programme en C, qui s'éxecute avec une
tâche cron (programmes là pour qu'il s'éxecute plutot la nuit quand il
y a peu d'acitvitée). Qui fasse ce travail.

Thomvaill
IRC : Thomas (irc.heliosnet.org:6667 #programmation)
0
Tilix Messages postés 171 Date d'inscription samedi 4 décembre 2004 Statut Membre Dernière intervention 31 août 2009
19 févr. 2006 à 17:37
Je n'y connais rien en C moi....
0
Tilix Messages postés 171 Date d'inscription samedi 4 décembre 2004 Statut Membre Dernière intervention 31 août 2009
19 févr. 2006 à 17:38
Et cette programmation C serai sensé servir à quoi ?
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
19 févr. 2006 à 17:56
"Dans cette boucle, il y'a une autre boucle d'environ 10 tours (le système cherche sur 10 tables différentes afin de faire un calcul de l'argent que le membre doit gagner. (en fonction des bâtiments qu'il possède))"





c'est peut- etre là qu'il ya un pb de conception ou structure de ta base
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
19 févr. 2006 à 18:44
Il serait bien de voir le code et les structures des tables, mais effectivement y'a surement un problème de conception...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 févr. 2006 à 06:47
Je le pense aussi.
Tilix, vous savez combien il y a de membres sur CS ? 591000. Vous imaginez que CS soit avoir pas mal de tables différentes, aussi.
Et pourtant, hormis quand les serveurs plantent ;-), vous avez déjà vu une requête qui prend plus de 10s sur ce site...?
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
20 févr. 2006 à 07:03
Moi j'ai déjà vu la page se générér en plus de dix secondes ^^

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Rejoignez-nous