Supprimer fichiers vieux de 6 mois...

Signaler
Messages postés
31
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
26 juillet 2007
-
cs_rider260
Messages postés
1
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
12 juillet 2010
-
Salut !

Je cherche comment réaliser un script php qui supprime les fichiers d'un répertoire qui sont vieux de plus de 6 mois.

Je connais déjà filetime pour récupérer la date de création et unlink
pour supprimer mais je bloque à la comparaison avec la date actuelle...

Je voudrais aussi savoir comment faire pour que le script s'exécute automatiquement tout les jours.



Merci @ vous tous !
MeTaLdArK

6 réponses

Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
6
Exécution automatique -> cron (c'est une fct serveur, pas php => exec(...))

Date -> un truc du genre:

$filename = 'lefichier';

if (file_exists($filename)) {

$datelasteacces = date("Ymd", fileatime($filename));// exple: 20050201

$datedujour = date("Ymd");// exple: 20050813



if($datedujour-$datelasteacces>600){ // exple: 612, donc plus de 6 mois

unlink($filename);

}

}

PS: j'ai pas testé, alors dis moi quoi comment... hehe
Messages postés
31
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
26 juillet 2007

Merci !

Je ne peut pas tester, je n'est pas de fichier de plus de 6 mois

Mais en tout cas il ne supprime pas les autres fichiers
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
6
ouais ben prends pas ca comme la parole divine, parce qu'à y regarder de plus près, ca foire mon code! oops!



Je recommence... et je re-post! A tout'
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
6
Voilà j'y suis et cette fois c'est juste



<?php



$filename = 'tonfichier';

if (file_exists($filename)) {

$dif =round((strtotime(date("Ymd")) - strtotime(date("Ymd", fileatime($filename))))/86400);



if($dif>180){ // exple: 180 jours, donc environ 6 mois. Tu mets ce que tu veux quoi...

unlink($filename);

}

}

?>
Messages postés
31
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
26 juillet 2007

Merci

J'ai pu modifier ton script pour l'adapter :



<?php

$handle=opendir($path);

while ($file = readdir($handle))

{

if (is_file ($path.$file))

{

$dif =round((strtotime(date("Ymd")) - strtotime(date("Ymd", fileatime($filename))))/86400);

if($dif>180)

{

unlink($path.$file);

}

}

}

closedir($handle);

?>
Messages postés
1
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
12 juillet 2010

Je crois que ton code ne marche pas :S

J'ai fais cela :
<?php
$dossier = 'dossier';
$valeur = 0;

function count_files($dir)
      {
              $num = 0;
     
              $dir_handle = opendir($dir);
                 while($entry = readdir($dir_handle))
                      if(is_file($dir.'/'.$entry))
                                 $num++;
              closedir($dir_handle);
      
               return $num;
       }


   
$nbrfichier = count_files($dossier);	
$fichier = scandir($dossier, 1);

while ($valeur <= $nbrfichier)
{

$filename = $dossier.'/'.$fichier[$valeur];
if (file_exists($filename)) {
   $dif =round((strtotime(date("Ymd")) - strtotime(date("Ymd", fileatime($filename))))/86400);

   if($dif>7){ // exple: 180 jours, donc environ 6 mois. Tu mets ce que tu veux quoi...
      unlink($filename);
   }  
}

$valeur++;
}
?>