begin process at 2012 05 31 19:09:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

validation sur download forcée (header http)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

validation sur download forcée (header http)

jeudi 14 octobre 2004 à 09:11:25 | validation sur download forcée (header http)

mortiis


Bonjour à tous

J'ai un script qui fait un download forcé sur un fichier zip.
En fait ce script génère un fichier zip selon les fichiers que l'utilisateur à sélectionné et ensuite envoi le zip par download forcé et finalement supprime le fichier zip.

Tout sa fonctionne à merveille.

Le problèmme est que si l'utilisateur à sélectionner pour 100 mo de fichier sa prend un bon 30 seconde avant que mon script`ait eu le temps de faire le zip. Alors si pendent ce temps, le client ferme le browser, mon script continu à tourner et le fichier zip se créé quand même, par contre, l'envoi ne s'effectu pas puisque le client est fermé, ce qui a pour effet que le script arrête et que le fichier zip ne se supprime pas.

Il peut y avoir un autre problèmme qui est que si l'utilisateur appuy sur le bouton annuler de la boite d'enregistrement du fichier, le script arrête aussi de tourner et ne se rend pas non plus au code qui supprime le fichier zip temporaire.

Alors ce que je voudrait faire c'est valider si l'utilisateur appuy sur la touche annuler pour pouvoir faire un unlink sur le zip.
Est-ce possible ? je sait que sa se fait avec la fenêtre d'identification.

En un deuxième temps pour savoir si la fenêtre est fermée avant de commencer le download.
Je sait pas si sa se fait, mais p-e en envoyant une entete http avec header ?
J'avait pense a onunload de html avec du javascript, mais le problèmme c'est que la fenêtre est vide puisque c'est un download automatique et qu'on ne peut pas écrire dans la fenêtre sinon sa marche pas.

Bon je crois que le problèmme est bien illustré et ce que je cherche aussi. Je serait bien content d'avoir une solution qui fonctionne, car j'ai épuiser toutes mes ressources et toutes mes idées aussi farfelues les unes que les autres.

Alors toutes les suggestions moindrement sensées sont les bienvenue

Merci beaucoup pour le temps.
samedi 16 octobre 2004 à 15:52:05 | Re : validation sur download forcée (header http)

nlh

alors pour le premier probleme... il faut que le script s'arrete quand le client ferme la fenetre :

si c'est ton propre serveur je te conseille de le configurer pour arreter l'execution du script si le client a fermer la fenetre (ignore_user_abort dans le fichier php.ini), afin de ne pas le faire bosser pour rien dans le cas d'un gros fichier.
ou/et de mettre ca dans ton php.


//quand le script se ferme
//on exectute la fonction shutdown
register_shutdown_function("shutdown");
//voila la fonction shutdown
function shutdown(){
//elle verifie de quelle facon c'est couper le script
//si c'est le client qui a coupé le script alors
if(connection_status()=="1"){
//on supprime le fichier qui vien de se creer
supprimer le fichier
}

}



sinon j'ai pas bien compris comment tu supprimais tes fichiers ducoup j'ai pas compris tres bien les problemes suivants. mais a vue de nez je pense que tu peux en resoudre pas mal rien qu'avec ca...



Emailing-Online est en cour de réalisation, mais vous pouvez quand meme regarder et tester.
samedi 16 octobre 2004 à 17:09:52 | Re : validation sur download forcée (header http)

mortiis


Bonjour à tous

Ce que tu vient de me donner comme code est fantastique je cherchait sa depuis longtemps j'étais sur le bord d'une dépression.

Merci beaucoup, je vais tester sa tout de suite.
samedi 16 octobre 2004 à 18:00:00 | Re : validation sur download forcée (header http)

mortiis


Bonjour à tous

Bon finalement j'ai tester ta solution et je n'ai pas eu de récultats.
Voici ce que j'ai fait :

//Enlève la limite de 30 secondes
set_time_limit(0);
print("\n");
ignore_user_abort(false);
register_shutdown_function("shutdown_m");
function shutdown_m()
{
print("\n");
if(connection_aborted())
{

if(is_file("path_fichier.extention"))
unlink("path_fichier.extention");
exit;
}
}

j'ai aussi essayer la même chose avec :
ignore_user_abort(true);

Et j'ai aussi essayer simplement de mettre à la fin de mon script :

print("\n");
if(connection_aborted())
{

if(is_file("path_fichier.extention"))
unlink("path_fichier.extention");
exit;
}


Et rien de tout sa fonctionne. Est- qu'il y aurait des config a faire dans httpd.conf ou dans php.ini ou dans my.ini ?

Si oui j'aimerais bien savoir lesquel

Merci encore.
samedi 16 octobre 2004 à 20:36:39 | Re : validation sur download forcée (header http)

nlh

ignore_user_abort(false);
ca ca ne sert a rien... c'est dans le php.ini qu'il faut changer ca... mais c'est optionnel, t'embete pas avec ca...

if(connection_aborted())
cette fonction ne marche plus depuis la version 3 je crois... sert toi de celle que je t'ai donné connection_status(), si elle retourne 1 c'est que le client a fermer ca fenetre

sinon la deuxieme methode c'est pas la bonne dutout :les fonction connection_aborted() ou connection_status() ne fonctionnent que lorsque le script est terminé. donc cette fonction ne sert que dans un truc du genre register_shutdown_function

pi voila..

Emailing-Online est en cour de réalisation, mais vous pouvez quand meme regarder et tester.
samedi 16 octobre 2004 à 22:37:55 | Re : validation sur download forcée (header http)

mortiis


Bonjour à tous

J'ai réessayer :

register_shutdown_function("shutdown");
//voila la fonction shutdown
function shutdown()
{
mkdir("k://" . connection_status());
if(connection_status() == 1)
{
mkdir("k://del");
}

}

J'ai aussi essayer avec le "1" comme dans ton exemple

j'ai aussi essayer avec et sans :
ignore_user_abort

Et j'ai toujours le même résultat connection_status() vaut toujours 0.
La fonction shutdown est appelé, mais toujours après que le script ait fini l'exécution.
Même si le client ferme le browser le script continu à s'exécuté et à la fin je recoit toujours connection_status() == 0

Alors je commence à croire que soit ce script ne fonctionne pas, soit il faut configurer qqc dans php.ini ou dans httpd.conf

Aurait tu une solution.
samedi 16 octobre 2004 à 22:50:34 | Re : validation sur download forcée (header http)

nlh

ce qui est sure c'est que la fonction va forcement s'executer a la fin du script... mais ca a la rigueur c'est pas vraiment grave le but c'est que tu puisse réagir en fonction de l'action de l'utilisateur... si tu veux qu'il se ferme au moment de la fermeture du browser va changer la ligne ignore_user_abort dans le php.ini.. c'est tout ce que je sais...
pour ce qui est du connection_status qui reste a "0", je ne sais pas pourquoi... normalement ca veux dire que le script s'est executer normalement, et que ni time_out, ni fermeture du browser ont pertubé le script.
donc j'en deduis soit que le scripte s'est executé correctement
soit que cette fonction ne marche pas sur ton serveur..
pour tester configure le time_out à 1 sec

ini_set('pfpro.defaulttimeout',"100000");
ini_set('max_execution_time',"100000");

et regarde si connection_status() == 2.. dans ce cas ca veut dire que la fonction marche...
désolé que ca ne fonctionne pas chez toi.... chez moi c'est impec.. je sais pas quoi te dire...

Emailing-Online est en cour de réalisation, mais vous pouvez quand meme regarder et tester.
samedi 16 octobre 2004 à 22:52:28 | Re : validation sur download forcée (header http)

nlh

oups pardon... c'est :
ini_set('pfpro.defaulttimeout',"1");
ini_set('max_execution_time',"1");

pour mettre le time out a 1sec dsl ;)

Emailing-Online est en cour de réalisation, mais vous pouvez quand meme regarder et tester.


Cette discussion est classée dans : fichier, script, utilisateur, zip, download


Répondre à ce message

Sujets en rapport avec ce message

AU SECOURS !!! ZIP ZIP [ par omnikod ] Voilà mon pb :je voudrais que le script php lise à un certain moment (kan la base dépasse une certaine taille par exemple) les enregistrement d'une t créé 1 zip avec un file [ par Stephane ] salubeh voila je voudrai savoir si c possible et si oui comment, créé un zip avec 1 fichier dedan (je n'ai besoin que d'y mettre 1 fichier)merci bcp ! script sur la résolution d'écran [ par vopicek ] Pour dimmensionnner une galerie d'icones de photos, il est intéressant d'avoir la résolution d'écran du visiteur.Il y a une astuce sur le site, mais i trouver mon erreur ! [ par tonyo ] Voila mon code qui doit me permettre de comparer des nombres entrés par l'utilisateur à la page précédente et ceux contenus dans un fichier .txt. l'or upload fichier ZIP [ par kalib ] bonjourje ne trouve pas comment faire pour uploder un fichier zip sur mon FTP depuis un interface PHP.Et permettre la decompression de ce fichier sur excusez moi je me suis planté de fichier zip [ par delbator ] j'ai mis un petit prog de 4ko dans le fichier zip joind a ma source ki ne correspond pas a l'annonce je ne sais pas komment effacer cette source envoy Bloquer fichier .js [ par mathieumg ] Sur ma page j'ai un script qui utilise un fichier .js.Je voudrais que ma page ait les droits d'afficher ce fichier mais si on va à mon adresse /mon_fi Download [ par DeepXtaZy ] Bonjour,Je vous previens, je ne veux pas que l'on me rit au nez.Ce n'est pas vraiment du PHP.Je sais faire pour demander une fenêtre d'ouverture de fi Download [ par DeepXtaZy ] Bonjour,Je vous previens, je ne veux pas que l'on me rit au nez.Ce n'est pas vraiment du PHP.Je sais faire pour demander une fenêtre d'ouverture de fi Double téléchargement de fichier [ par adeline63 ] Bonjour,J'utilise un script php qui, après avoir créé 2 fichiers txt, doit permettre à l'utilisateur de les télécharger : l'un après l'autre, en même


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales