Supprimer un fichier á la fermeture de la page

cs_pebayart Messages postés 17 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 6 février 2014 - 13 juin 2013 à 20:27
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 - 13 juin 2013 à 21:55
Bonjour tout le monde,

Je cale sur un script, si vous avez des infos pour m'aiguiller :)

Voici le contexte :
Je veux permettre a mes membres de télécharger leur profil au format pdf.
Quand les membres font la demande de téléchargement en cliquant sur un lien, ils sont envoyés vers un script php qui va créer un répertoire temporaire TEMP, et copier leur profil.pdf dans ce répertoire TEMP.
Ensuite script.php crée une page html avec le lien permettant le téléchargement de profil.pdf, puis affiche cette page html.

La question est :
Comment faire pour supprimer le répertoire TEMP et son contenu (profil.pdf et page.html) ?

Condition :
- soit quand la page.html est fermée
- ou après, par exemple, 15 minutes de la création de page.html par script.php


Merci beaucoup de votre attention,
passez une belle soirée.

Pierre-Emmanuel


******
"Ama et fac quod vis"
(aimes et fais ce que tu veux)

1 réponse

BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
13 juin 2013 à 21:55
Hello,

Dans ton cas je dirai que la tâche cron est ton amie .
Une tâche cron c'est un script que le serveur va exécuter à des intervalles que tu auras indiqués, par exemple chaque heure, ou chaque minute, ou 1 fois par jour à midi (bref, c'était au cas où tu ne connaisses pas cron).

En somme tu peux facilement mettre en place un système de purge qui supprimera tous les fichiers.pdf générés et à priori téléchargés.
Pour ce faire voici ce que je ferai :

- Lorsque tu crées le .pdf de l'utilisateur tu nommes le fichier avec 2 paramètres : l'id du membre + 1 timestamp, comme ceci par exemple :

<?php
$file = $idMembre."_".time();
?>


- Tu stockes chaque fichier.pdf créé dans le même dossier et reste alors à créer ton script qui te permettra de purger les fichiers en fonction du timestamp contenu dans leurs noms, script qui sera exécuté en tâche cron (supprimer des fichiers est très rapide donc tu peux je pense exécuter une tâche cron toutes les 10 minutes sans problème).

- Pour récupérer le timestamp contenu dans le nom des fichiers, une petite fonction pourrait faire l'affaire :

<?php

function PDFperimes($file){
$h = time();
$t = explode("_",$file); // on découpe le nom du fichier
$t = $t[1];             // on récupère la partie après l'underscore soit le timestamp + l'extension
$t = explode(".",$t);   // on découpe à nouveau en sectionnant à partir du point
$t = $t[0];             // on récupère alors le timestamp seul
if(($h-$t) > (60*15)){ // si le fichier existe depuis plus de 15 minutes...
return true            // on retourne true (fichier à effacer donc)
}else{                 // sinon
return false           // on retourne false et on laisse le fichier tranquille
}
}

?>


- Tu appelleras donc la fonction dans le script qui sera exécuté en tâche cron et suivant la valeur retournée tu effaces le fichier ou non :

<?php

if(PDFperimes($fichier_a_tester)){
unlink($chemin.'/'.$fichier_a_tester);
}

?>


- Tu peux éventuellement stocker chaque nom de fichier généré dans une table de ta base de données (c'est ce que je ferai à ta place), comme ça tu n'as qu'à parcourir la table et appliquer la fonction dessus. Tu peux aussi nommer les fichiers générés autrement et stocker le timestamp dans un champ supplémentaire de la table... Bref, tout ceci n'est qu'un exemple, mais moi j'utiliserai tâche cron + timestamp pour faire ce que tu veux faire.

A+

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
0
Rejoignez-nous