[RESOLU] supprimer fichier le plus ancien

Eléphant du PHP | 56 Messages

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 !

Mammouth du PHP | 1966 Messages

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)
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 56 Messages

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

Mammouth du PHP | 1966 Messages

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)
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 56 Messages

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 !