|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2003 Messages : 68 ![]() |
Salut,
Voilà, j'ai une fonction qui importe une série d'enregistrement dans ma DB, il peu y avoir plusieurs centaines d'enregistrement avec pour chaque enregistrement un déplacement de fichier. C'est parfois donc plutot long, et j'ai un probleme. Apres un certain temps le script s'arrete, tout les enregistrement déja effectuer sont correctes mais jamais la totaliter, il s'arrete apres 20-30 secondes je dirais. Donc voila mon problème principale. De plus j'aimerais éviter (meme une fois se problème résolu) que la fonction donne simplement l'impression d'une page qui met 5 minutes a charger, donc je voulais afficher ligne par ligne chaque enregistrement ajouter au fure et à mesure de l'exécution du script. En théorie c'est simple j'affiche simplement dans ma boucle une ligne de tableau a chaque fois. Mais en pratique ca ne marche pas vu qu'il ne les affiche qu'une fois le script php totalement interpreter, dont apres les 5 minutes d'attente ^^ Voilà je sais que c'est faisable puisque j'ai déjà un script existant mais comme il est crypter en Zend, difficile d'aller chercher de l'inspiration dessus lol. Merci beaucoup pour votre aide. |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : février 2006 Messages : 840 ![]() |
Tu devrais limiter ta boucle à moins d'itération, sinon pour afficher le résultat du tratement de ta boucle "en temps réel" c'est à dire au fur et à mesure tu peux utiliser flush() dans ta boucle.
__________________
Consultant idéaliste. |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2003 Messages : 68 ![]() |
Pour flush je viens d'essayer mais ca marche pas, enfin je sais ptet pas l'utiliser. Je doit juste placer flush(); a la fin de chaque itération de ma boucle ?
J'ai essayer ob_flush() ca donne rien non plus. |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 1 421 ![]() |
tu devrais aussi faire attention au time out
pour ma part j'utilise la session et un header de redirection pour faire des traitement par lot bref mon script traite un lot dans l'ensemble place en session l'état d'avancement du travail et envoit un header de redirection au client contenant le script lui même le client rappelle donc le script qui passe alors au lot suivant. ainsi le temps du script n'est pas trop long et donc pas de risque de time out. par contre il ne faut pas trop morceler car à chaque rappel il faut reprendre tout le contexte donc réouvrir des fichier des connexion etc.. A+JYT |
|
|
00
|
|
|
#5 | |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2003 Messages : 68 ![]() |
Citation:
|
|
|
|
00
|
|
|
#6 | |
|
Membre émérite
![]() Inscription : février 2006 Messages : 840 ![]() |
Sauf si tu as enregistré en session ce qu'il faut afficher.
Pour flush() considères ce snippet : Citation:
__________________
Consultant idéaliste. |
|
|
|
00
|
|
|
#7 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2003 Messages : 68 ![]() |
Citation:
|
||
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() Inscription : février 2006 Messages : 840 ![]() |
Il faut peut-être buffériser le tout avant ? Avec ob_flush par exemple.
Ce n'est pas une technique très utilisée parce qu'elle comporte quelques contraintes semble t'il.
__________________
Consultant idéaliste. |
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2003 Messages : 68 ![]() |
A propos de la redirection, j'ai un ptit probleme, etant donné que j'affiche du code html a chaque debut de script, la fonction header("location: xxx") ne marche pas. Donc je ne sais pas rediriger le script sur lui meme.
Il y a un autre moyen pour rediriger vers une page ? Merci |
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
html, <meta> dans le <head>
javascript, location.href = new_url; |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com