Script de suppression de fichier temporaire

Signaler
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012
-
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012
-
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

Messages postés
55
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
2 avril 2012

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
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

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 ^^.
Messages postés
55
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
2 avril 2012

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
?>
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

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 )
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
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.
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

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 ^^