Se connecter / S'enregistrer
Votre question

[PHP/JS] Fin d'un téléchargement [Résolu]

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
a c 232 L Programmation
5 Octobre 2007 10:42:59

Salut les gens,

Aujourd'hui c'est à moi de poser une question. [:omar_sharif]
J'ai du développer pour une entreprise une page PHP qui va créer un fichier PDF (via html2fpdf).

Le problème est que le fichier généré contient beaucoup de lignes, et que la génération, à l'heure actuelle dure environ 2 minutes 30.

Donc, il y a un bouton pour télécharger le pdf, une fois cliqué, le texte change en message de chargement; mais telle que je connais l'entreprise, elle va me demander d'afficher quand est-ce que le pdf sera généré; et donc de rechanger le texte pour pouvoir retélécharger le pdf. Et vu que le fichier PDF ne mettra pas forcément 2 minutes 30, vu que ça dépend de ce qu'il y a dedans, et que ça peut changer à tout moment; je ne peux pas réafficher au bout de 2 minutes 30 un message comme quoi c'est fini.

Je cherchais donc une solution qui me permettrait de savoir quand est-ce je pourrais savoir quand le PDF a fini d'être généré ?

Une solution à laquelle j'ai pensé serait de créer un cookie à la fin de la génération du fichier en PHP, et de regarder toutes les 5 secondes (par exemple), via du JavaScript si ce cookie existe.

Est-ce que vous avez une autre solution moins gore ou plus gore ? (pas de soucis)

Merci

Autres pages sur : php fin telechargement resolu

5 Octobre 2007 13:24:03

salut,
j'ai pas très bien saisi ta solution. la génération se fait coté serveur, le cookie coté client, qu'est ce qui te permet de modifier le cookie?

sinon, personnellement, je verrais 2 appels XMLHttpRequest, le premier pour lancer la création, le 2eme se faisant chaque Xsec pour vérifier si le fichier est prêt pour pouvoir changer le libellé du bouton ou carrément afficher le pdf.
a c 232 L Programmation
5 Octobre 2007 13:41:32

Salut,

Merci pour ta réponse.

Je viens juste de finir ça.

Sur ma première page, j'ai un lien pour appeler un script PHP dans lequel je créé un PDF, et un cookie (en PHP toujours). Et en fait, la page PHP est transformée en PDF, et est proposé à l'enregistrement pour l'utilisateur (un header Content : Attachement si tu veux).
Toujours sur la première page, au moment où j'appelle le script PHP, je lance un interval en javascript qui vérifie toutes les 3 secondes si le cookie existe. S'il existe, j'arrête l'interval, mange mon cookie et repasse mon texte d'origine.

C'est plus clair ?

Cette solution à l'air de fonctionner.

Par rapport à ce que tu avais compris, en fait, je n'enregistre pas le PDF sur le serveur, je le propose juste à l'enregistrement (parce que sinon, je mettrai juste un lien vers le PDF, et basta :) ), donc il faut le regénérer à chaque fois (oui c'est pas pratique, mais bon).
Contenus similaires
5 Octobre 2007 13:56:01

Et si tu faisais un timer en Javascript, qui appelle un script PHP vérifiant l'existence du fichier crée toutes les 5 secondes par exemple ? Ou, s'il est crée au début, pour vérifier la croissance de la taille du PDF ?
a c 232 L Programmation
5 Octobre 2007 13:57:50

Bah en fait, comme je l'ai dit dans mon deuxième message, le fichier n'est pas créé sur le serveur, il est directement proposé au téléchargement.
Donc je ne peux pas savoir si le fichier est créé, ni sa taille...
5 Octobre 2007 14:11:50

ok, et pour la méthode cookie, tu appelles la page de création du pdf dans une autre fenetre?
a c 232 L Programmation
5 Octobre 2007 17:21:00

Bah en fait, c'est juste un lien, sans target _blank, mais ça marche quand même. D'ailleurs j'ai pas trop compris comment ça se faisait que la page ne devienne pas blanche pour charger le PDF, mais bon, tant que ça fonctionne, ça me va :) 
Et le cookie est quand même lisible sur la première page (j'avais peur de ça justement).

Mais finalement, après avoir parlé avec un autre développeur du projet, j'ai mis une variable de session, et utilisé des XMLHttpRequest. Ca fait un peu plus propre, et si la personne désactive les cookies, ça fonctionne quand même, vu que la session fonctionnera (il faut forcément être connecté pour avoir accès à ce PDF).

Merci de vos conseils en tout cas :) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS