Page 1 sur 1

supprimer fichier le plus ancien

Posté : 28 janv. 2014, 11:10
par synergie
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 !

Re: supprimer fichier le plus ancien

Posté : 28 janv. 2014, 11:30
par Spols
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)

Re: supprimer fichier le plus ancien

Posté : 28 janv. 2014, 11:46
par synergie
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

Posté : 28 janv. 2014, 12:01
par Spols
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

Posté : 28 janv. 2014, 12:09
par synergie
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 !