script php pour supprimer les fichiers de plus de 24 heures, supprime tous les fichiers
j'ai écrit ce script php pour supprimer les vieux fichiers de plus de 24 heures, mais il a supprimé tous les fichiers, y compris les plus récents:
<?php
$path = 'ftmp/';
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ((time()-filectime($path.$file)) < 86400) {
if (preg_match('/.pdf$/i', $file)) {
unlink($path.$file);
}
}
}
}
?>
24
demandé sur
Brian Tompsett - 汤莱恩
2010-06-27 06:40:15
6 réponses
(time()-filectime($path.$file)) < 86400
si l'heure courante et l'Heure de modification du fichier sont à l'intérieur de 86400 secondes l'un de l'autre, alors...
if (preg_match('/\.pdf$/i', $file)) {
unlink($path.$file);
}
je pense que peut être votre problème. Changer de > ou >= et cela devrait fonctionner correctement.
28
répondu
ssube
2010-06-27 02:45:03
<?php
/** define the directory **/
$dir = "images/temp/";
/*** cycle through all files in the directory ***/
foreach (glob($dir."*") as $file) {
/*** if file is 24 hours (86400 seconds) old then delete it ***/
if(time() - filectime($file) > 86400){
unlink($file);
}
}
?>
vous pouvez également spécifier le type de fichier en ajoutant une extension après le * (Joker) eg
pour les images jpg utiliser:glob($dir."*.jpg")
Pour les fichiers txt utilisation: glob($dir."*.txt")
Pour les fichiers htm utilisation: glob($dir."*.htm")
55
répondu
Mike
2017-04-12 08:41:00
>
à la place.- à moins que vous ne couriez sur Windows, vous voulez
filemtime()
à la place.
8
répondu
Ignacio Vazquez-Abrams
2010-06-27 02:44:43
<?php
$dir = getcwd()."/temp/";//dir absolute path
$interval = strtotime('-24 hours');//files older than 24hours
foreach (glob($dir."*") as $file)
//delete if older
if (filemtime($file) <= $interval ) unlink($file);?>
6
répondu
cfv1000
2013-07-01 11:14:29
fonctionne très bien
$path = dirname(__FILE__);
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
$timer = 300;
$filetime = filectime($file)+$timer;
$time = time();
$count = $time-$filetime;
if($count >= 0) {
if (preg_match('/\.png$/i', $file)) {
unlink($path.'/'.$file);
}
}
}
}
0
répondu
saefry
2016-09-08 04:40:54
$path = '/cache/';
// 86400 = 1day
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ( (integer)(time()-filemtime($path.$file)) > 86400 && $file !== '.' && $file !== '..') {
unlink($path.$file);
echo "\r\n the file deleted successfully: " . $path.$file;
}
}
}
0
répondu
Adam Pery
2018-09-03 13:10:28