PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 02-04-2016 18:39:28

codeur21
Membre
Inscription : 06-01-2014
Messages : 51

effacer tous les fichiers d'un dossier

Bonjour

J'ai un dossier contenant des images de noms differents et d'extensions
differentes comment vider ce dossier

j'ai essayé ceci trouve sur le net et ça tourne en boucle
jusqu'a me donner l'erreur delai 30 secondes d'execution dépassé

<?php

$dossier_traite = "ROOT.'data/dossier/'.$nom.'/'";

$repertoire = opendir($dossier_traite); // On définit le répertoire dans lequel on souhaite travailler.

while (false !== ($fichier = readdir($repertoire))) // On lit chaque fichier du répertoire dans la boucle.

{
$chemin = $dossier_traite."/".$fichier; // On définit le chemin du fichier à effacer.

// Si le fichier n'est pas un répertoire…

if ($fichier != ".." AND $fichier != "." AND !is_dir($fichier))

       {

       unlink($chemin); // On efface.

       }

}

closedir($repertoire);

Dernière modification par codeur21 (02-04-2016 18:41:06)



Tu donnes du poisson a un homme tu le nourris pour un jour ,
tu l'apprends à pêcher tu le nourris toute sa vie

Hors ligne

#2 03-04-2016 10:12:19

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : effacer tous les fichiers d'un dossier

Saluton,

Peut-être commencer en faisant précéder :
unlink($chemin); // On efface
par
printf("%s<br />", $chemin);
En fait je placerais plutôt le code dans cet ordre :

<?php

$dossier_traite = "ROOT.'data/dossier/'.$nom.'/'";

$repertoire = opendir($dossier_traite); // On définit le répertoire dans lequel on souhaite travailler.

while (false !== ($fichier = readdir($repertoire))) // On lit chaque fichier du répertoire dans la boucle.

{

// Si le fichier n'est pas un répertoire…

if ($fichier != ".." AND $fichier != "." AND !is_dir($fichier))

       {
       $chemin = $dossier_traite."/".$fichier; // On définit le chemin du fichier à effacer.

       printf("%s<br />", $chemin);

       unlink($chemin); // On efface.

       }

}

closedir($repertoire);

Après je m'interroge quant à l'impact d'unlink sur le pointeur interne de la fonction readdir, mais je ne lis rien de rédhibitoire dans la doc.
Testons déjà comme ça et voyons le résultat.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 03-04-2016 16:04:58

codeur21
Membre
Inscription : 06-01-2014
Messages : 51

Re : effacer tous les fichiers d'un dossier

En raison d'autres problemes j'ai modifié mon systeme

J'ai toujours mes fichiers a effacer qui peuvent avoir l'extension jpg,jpeg,png,gif
tous dans un meme dossier

j'ai voulu faire ceci :


unlink (dossier/sous_dossier/fichier.*);
 

et ça ne marche pas

j'ai bien pensé a une boucle mais je suis debutant et je maitrise pas du tout

merci d'avance


Tu donnes du poisson a un homme tu le nourris pour un jour ,
tu l'apprends à pêcher tu le nourris toute sa vie

Hors ligne

#4 03-04-2016 18:35:45

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : effacer tous les fichiers d'un dossier

Tout cela m'a l'air assez décousu, au final.

Bref, en lisant la doc PHP de unlink() je trouve ceci :

This will delete all files in a directory matching a pattern in one line of code.

<?php array_map('unlink', glob("some/dir/*.txt")); ?>

En remplaçant *.txt par, successivement *.jpg, *.jpeg, *.png, *.gif, ou, encore plus fort, si tu trouves un caïd en expressions rationnelles qui permette à glob() de trouver, en une seule passe, tous les fichiers avec ces extensions, mais rien que ceux-là.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums