Vider rapidement un répertoire sur serveur
28 messages
• Page 1 sur 2 • 1, 2
-

OTP - Modérateur

- Messages: 19532
- Inscription: 16 Déc 2005
Vider rapidement un répertoire sur serveur
Bonsoir,
J'utilise une gestion de cache sur mon site.
Le souci est que le site compte plus de 200 000 pages et vider ce cache est très long.
J'utilise actuellement cette méthode :
Mais sur mon mutu ça prend des plombes.
Connaissez-vous un moyen rapide de vider un répertoire bien encombré ?
Merci d'avance,
OTP
J'utilise une gestion de cache sur mon site.
Le souci est que le site compte plus de 200 000 pages et vider ce cache est très long.
J'utilise actuellement cette méthode :
- Code: Tout sélectionner
function SureRemoveDir($dir)
{
if(!$dh = @opendir($dir)) return;
while (($obj = readdir($dh)))
{
if($obj=='.' || $obj=='..') continue;
if (!@unlink($dir.'/'.$obj)) SureRemoveDir($dir.'/'.$obj, true);
}
}
Mais sur mon mutu ça prend des plombes.
Connaissez-vous un moyen rapide de vider un répertoire bien encombré ?
Merci d'avance,
OTP
-

loran750 - WRInaute passionné

- Messages: 2247
- Inscription: 15 Mar 2005
Re: Vider rapidement un répertoire sur serveur
Hello
Essaye ceci :
pioché sur http://www.php.net/manual/fr/function.rmdir.php
A noter que sur cette page, il y a d'autres solutions intéressantes, à tester
Essaye ceci :
- Code: Tout sélectionner
<?php
function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
}
}
?>
pioché sur http://www.php.net/manual/fr/function.rmdir.php
A noter que sur cette page, il y a d'autres solutions intéressantes, à tester
-

lunicrea - WRInaute impliqué

- Messages: 516
- Inscription: 30 Aoû 2010
Re: Vider rapidement un répertoire sur serveur
Ok bah comme loran750, je te propose un script en php alors :
Sachant que tu peux aussi supprimer un fichier avec ce bout de code ...
- Code: Tout sélectionner
<?php
/**
* rm() -- Vigorously erase files and directories.
*
* @param $fileglob mixed If string, must be a file name (foo.txt), glob pattern (*.txt), or directory name.
* If array, must be an array of file names, glob patterns, or directories.
*/
function rm($fileglob)
{
if (is_string($fileglob)) {
if (is_file($fileglob)) {
return unlink($fileglob);
} else if (is_dir($fileglob)) {
$ok = rm("$fileglob/*");
if (! $ok) {
return false;
}
return rmdir($fileglob);
} else {
$matching = glob($fileglob);
if ($matching === false) {
trigger_error(sprintf('No files match supplied glob %s', $fileglob), E_USER_WARNING);
return false;
}
$rcs = array_map('rm', $matching);
if (in_array(false, $rcs)) {
return false;
}
}
} else if (is_array($fileglob)) {
$rcs = array_map('rm', $fileglob);
if (in_array(false, $rcs)) {
return false;
}
} else {
trigger_error('Param #1 must be filename or glob pattern, or array of filenames or glob patterns', E_USER_ERROR);
return false;
}
return true;
}
rm("./ledossierasupprimer");
?>
Sachant que tu peux aussi supprimer un fichier avec ce bout de code ...
-

forty - WRInaute passionné

- Messages: 1702
- Inscription: 30 Oct 2008
Re: Vider rapidement un répertoire sur serveur
Si tu veux que les fichiers ne soient plus accessibles rapidement le mieux c'est sûrement de renommer le répertoire.C'est la seule solution valable que j'ai trouvée pour renouveler mon cache.
-

lunicrea - WRInaute impliqué

- Messages: 516
- Inscription: 30 Aoû 2010
Re: Vider rapidement un répertoire sur serveur
loran750 a écrit:@lunicrea : j'adore le "Vigorously erase"ça c'est du titre de fonction qui dépote !
héhé, wé c'est ma fonction ERASER !
ça t'enlève absolument toutes les merdes sur ton ftp.
-

zeb - WRInaute accro

- Messages: 4569
- Inscription: 5 Déc 2004
Re: Vider rapidement un répertoire sur serveur
en plus court (et rapide) :
note en manipulant la commande "rm" (voir man page) tu peux aussi introduire de la récursivité si necessaire.
- Code: Tout sélectionner
deleteAll($_SERVER['DOCUMENT_ROOT'].'/cache/.../');
function deleteAll($directory) {
exec("rm -rf $directory");
}
note en manipulant la commande "rm" (voir man page) tu peux aussi introduire de la récursivité si necessaire.
-

spout - WRInaute accro

- Messages: 4383
- Inscription: 14 Mai 2003
Re: Vider rapidement un répertoire sur serveur
- Code: Tout sélectionner
exec("rm -rf $directory");
Avec ça s'il y a trop de fichiers, rm va mettre une erreur "too many arguments" (limitation du kernel).
Il faut donc passer par find + xargs:
- Code: Tout sélectionner
exec("find $directory | xargs rm");
28 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Rediriger un répertoire sur un autre serveur
- Zipper un répertoire sur un serveur FTP à distance
- Redirection sélective d'un répertoire vers serveur distant
- Modification d'un répertoire sur serveur ftp [résolu]
- a vider
- Vider le cache
- Vider la file d'attente du FTP
- Google va bientôt vider son index
- Comment vider le champ d'une table ?
- Commande Linux pour vider le dossier /tmp ?
- Analyser la classe C de l'adresse IP
Cet outil vous permet de vérifier si plusieurs sites sont hébergés sur la même classe C (adresse IP du serveur). - Test HTTP header
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
