Supprimer fichiers vieux de 6 mois...

cs_Metaldark Messages postés 31 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 26 juillet 2007 - 13 août 2005 à 14:30
cs_rider260 Messages postés 1 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 12 juillet 2010 - 12 juil. 2010 à 10:59
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

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
13 août 2005 à 14:47
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
0
cs_Metaldark Messages postés 31 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 26 juillet 2007
13 août 2005 à 17:31
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
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
13 août 2005 à 17:44
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'
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
13 août 2005 à 18:02
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);

}

}

?>
0

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

Posez votre question
cs_Metaldark Messages postés 31 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 26 juillet 2007
13 août 2005 à 19:57
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);

?>
0
cs_rider260 Messages postés 1 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 12 juillet 2010
12 juil. 2010 à 10:59
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++;
}
?>
0
Rejoignez-nous