Exécution longue d'un script suite à un formulaire

Exécution longue d'un script suite à un formulaire - PHP - Programmation

Marsh Posté le 05-10-2005 à 10:29:25    

Bonjour à tous
 
Voilà mon problème. J'ai un script PHP/HTML qui affiche un formulaire, dans lequel, comme il se doit, nous avons pas mal de champs à remplir (cases à cocher, sélections dans des listes déroulantes ...). Une fois les champs saisis, il faut cliquer sur le bouton d'envoi pour lancer un second script PHP.
 
Ce second script PHP va alors créer des répertoires (nom de répertoire généré aléatoirement) et copier certains fichiers (copie du serveur vers un autre PC du réseau), dont le quantité dépend de ce qui a été saisi dans le formulaire précédent.
Le script, après copie, va envoyer à l'utilisateur qui a rempli le formulaire un mail dans lequel il trouvera le(s) chemin(s) d'accès au(x) fichier(s) qu'il a sélectionné(s). La création de répertoire et la copie de fichiers se déroulent très bien.
 
Le problème est le suivant : tant que la copie n'est pas finie (ce sont des fichiers qui peuvent faire plusieurs centaines de Mo), l'affichage sur le poste de l'utilisateur reste bloqué sur le formulaire. Le navigateur tourne pendant de nombreuses secondes et l'utilisateur peut croire que son PC et/ou le navigateur est (sont) bloqué(s). Le problème des 30 secondes (durée limite d'un script PHP) est solutionnée.
 
Ma question est la suivante : y a-t-il moyen, après avoir validé le formulaire, de faire apparaître une autre page ou une fenêtre dans laquelle il sera mentionné de patienter ? Ou mieux, s'affranchir de ce temps d'attente ?
 
Merci pour vos réponses.
 
Séb.

Reply

Marsh Posté le 05-10-2005 à 10:29:25   

Reply

Marsh Posté le 05-10-2005 à 11:27:01    

J'utilise

print("Traitement en cours" ); flush();
mon_traitement_etape1();
print("." ); flush();
mon_traitement_etape2();
print("." ); flush();

L'astuce est l'emploi du "flush()" pour forcer l'envoi du message.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed