Script de suppression de fichier temporaire

belzebate Messages postés 17 Date d'inscription vendredi 6 janvier 2012 Statut Membre Dernière intervention 17 février 2012 - 15 févr. 2012 à 16:45
belzebate Messages postés 17 Date d'inscription vendredi 6 janvier 2012 Statut Membre Dernière intervention 17 février 2012 - 17 févr. 2012 à 16:00
Bonjour,

Je vous explique mon soucis. J'ai un script PHP qui me créer un fichier temporaire dans un répertoire spécifique contenant exclusivement des fichiers temporaires puis qui est lu ensuite sur la page, le résultat quoi ^^.
J'aimerais pouvoir rajouter dans ce script un petit bout de code permettant de supprimer ces fichiers temporaires disons après 1 semaine de présence dans ce répertoire temp ...

Quelqu'un pourrait il m'aider ... ?

6 réponses

flasher_13 Messages postés 55 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 2 avril 2012
15 févr. 2012 à 22:24
Tu pourrais dans un premier temps, dès qu'un fichier temporaire est créé, insérer dans une base liste_fichiers_temp : 1-timestamp du fichier et 2-nom du fichierr

Comme celà tu peux tester tous les jours les fichiers qui ont un timestamp supérieur à 1 semaine et exécuter une commande unlink les suprimmer:

<?php
if(dbdata['timestamp']>=604800) // 60*60*24*7 = 604800 (1 semaine)
unlink(dbdata['name']);//supression du fichier temporaire
?>


Voilà c'est aussi simple que celà, si jamais tu ne veux pas passer par une bdd, utilise la fonction filectime($f) qui retourne la date de création du flux $f ouvert sur fichier.

A bientôt,

Flash
0
belzebate Messages postés 17 Date d'inscription vendredi 6 janvier 2012 Statut Membre Dernière intervention 17 février 2012
15 févr. 2012 à 22:34
ouai j'avais l'idée de la base de donnée aussi mais elle me servira qu'a ça malheureusement.
je vais regarder la fonction filectime, je la connaissais pas ^^.
0
flasher_13 Messages postés 55 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 2 avril 2012
15 févr. 2012 à 22:50
oki, utilise plutot filemtime j'ai confondu les 2 fonction sont un peu différente.

Sans bdd ca donnera plutôt quelque chose comme celà alors:

<?php
if((time()-filemtime($filename))>=604800)
unlink($filename);//supression du fichier temporaire
?>
0
belzebate Messages postés 17 Date d'inscription vendredi 6 janvier 2012 Statut Membre Dernière intervention 17 février 2012
16 févr. 2012 à 08:42
je me posais une question:

Voici quelques détails sur mon script.
Le départ se fait d'un formulaire d'envoie de fichier et d'un ensemble de 6 checkbox.
On peut choisir plusieurs checkbox.
Une fois le fichier envoyer. Il va être traité par le ou les checkbox cochées (6 fonctions différentes quoi mais se ressemblant toutes) puis ça va donc créer un fichier temporaire par checkbox coché ...(sachant que le nom de chaque fichier temp est totalement différent suivant les checkbox)


Est ce qu'il y aurais un moyen de parcourir le répertoire temp puis supprimé du coup les fichiers trop vieux ?

Sinon ben je vais me débrouiller avec ce que tu me proposes ( je connaissais pas du tout donc c'est déjà un grand pas )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
17 févr. 2012 à 01:29
Salut,

As-tu vraiment besoin de ces fichiers temporaires ? Donne donc un peu plus de détails sur ton script, si tu peux t'en passer ça va te faire un soucis en moins.
0
belzebate Messages postés 17 Date d'inscription vendredi 6 janvier 2012 Statut Membre Dernière intervention 17 février 2012
17 févr. 2012 à 16:00
malheureusement je ne peux pas me passer de ces fichiers temporaires ...

En reprenant ce que j'ai dit précédemment, une fois le formulaire envoyer.

ça va éxécuter ce script la ^^

<?php

$dirDest = dirname(__FILE__)."/tmp/";
$datefile = date("YmdHis");
$fileDest = "file_".$datefile.".csv";
if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
 echo "
Le déplacement du fichier temporaire a échoué.
";
 echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
}
} else {
echo "Le fichier n'a pas été uploadé. ";
}

function ExecR($namescript){
 $out = array();
 global $datefile,$dirDest,$fileDest;
 echo "
";
 echo 'Traitement en cours de '.$namescript.' : 0%;
 

 ';
 echo "
";
 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./'.$namescript.'.R > ./tmp/'.$namescript.'_'.$datefile.'.txt 2>/dev/null &', $out);
 echo '<script type="application/javascript"> files_out.push("'.$namescript.'_'.$datefile.'");</script>';
}

if( isset($_POST['LKB']) && $_POST['LKB']=='LKB'){
  ExecR("LKB");
}
if ( isset($_POST['Logit']) && $_POST['Logit']=='Logit') {
  ExecR("Logit");
}
if ( isset($_POST['Poisson']) && $_POST['Poisson']=='Poisson') {
  ExecR("Poisson");
}
if ( isset($_POST['Kallman']) && $_POST['Kallman']=='Kallman') {
  ExecR("Kallman");
}
if ( isset($_POST['Schul']) && $_POST['Schul']=='Schul') {
  ExecR("Schul");
}
if ( isset($_POST['Parallel']) && $_POST['Parallel']=='Parallel') {
  ExecR("Parallel");
}

?>

<script type="application/javascript" src="NTCP_ahi.js"></script>


le javascript est couplé avec un autre PHP que j'appel "check". Il sert exclusivement à éviter le timeout de la page et à afficher un % pour voir où on en est ^^.

hum je vois pas trop quoi dire de plus ...

hésites pas si tu as des questions mais pour moi le fichier temp est inévitable ^^ ( puis je risque d'en avoir besoin pour ma seconde partie de stage je vais devoir garder ces fichier temp pour les mettre dans une base de donnée ). Fin bref un projet aussi complexe que intéressant ^^
0
Rejoignez-nous