[RESOLU] supprimer fichier le plus ancien

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] supprimer fichier le plus ancien

Re: supprimer fichier le plus ancien

par synergie » 28 janv. 2014, 12:09

Ah oui, j'ai compris. Etant donné que j'ai créé mes fichiers dynamiquement, avec la date actuelle et l'heure actuelle, ça ne me pose aucun soucis pour le scandir.

Merci quand même de tes réponses !

Re: supprimer fichier le plus ancien

par Spols » 28 janv. 2014, 12:01

d'après la doc,
http://be2.php.net/manual/en/function.scandir.php

scandir classe tes fichiers par ordre alphabetique, il ne semble pas possible de classer par date de création

Il te faut parcourir tes fichiers un à un et vérifier que la date soit ou non inférieure à la dernière date enregistrée.
tu enregistre le timecode de l'instant avant ta boucle
tu boucle sur tous les fichiers
si le timecode est supérieure à celui qui est enregistré tu passe au fichier suivant
sinon tu écrase le timecode par le nouveau et tu stocke ton nom de fichier
à la fin de la boucle, tu auras le fichier le plus ancien (sauf si le dossier est vide, il faut prévoir une exception pour évité des erreurs)

Re: supprimer fichier le plus ancien

par synergie » 28 janv. 2014, 11:46

Merci de ta réponse !

En faite, j'ai trouvé. Je ne sais pas si cela est très propre, m'enfin...

if (count(glob("nomDossier/*")) >= 10)
{

$dir = "nomDossier";
$files=scandir($dir);

unlink("nomDossier/$files[2]");
}

en effet, les fichiers sont triés par date de création, je n'ai donc qu'à supprimer le deuxième à chaque fois. Seulement, j'ai une question : scandir triera toujours pas ordre de création ou il pourra bouger ? Car si je laisse $files[2] et que ça bouge, je risque de supprimer des mauvais fichiers...

Re: supprimer fichier le plus ancien

par Spols » 28 janv. 2014, 11:30

Il y a des fonctions qui permette de lire la date de création, modification ou dernier accès
filectime(); filemtime(); fileatime();
Ensuite tu classe par ordre et tu supprime le dernier (ou premier selon l'ordre choisis)

supprimer fichier le plus ancien

par synergie » 28 janv. 2014, 11:10

Bonjour,

Je dois tout d'abord compter le nombre total de fichiers de mon dossier (Ca, j'ai réussi)

Et, s'il est supérieur à 10, supprimer le fichier le plus ancien.

Je sais qu'il faut utiliser unlink, mais comment faire pour supprimer le fichier le plus vieux ? Une fonction existe ?

Merci !