Supprimer un fichier á la fermeture de la page

Signaler
Messages postés
17
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
6 février 2014
-
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
-
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

Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
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... ;-) ;