php脚本删除超过24小时的文件,删除所有文件
我编写了这个 php 脚本来删除超过 24 小时的旧文件, 但它删除了所有文件,包括较新的文件:
<?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);
}
}
}
}
?>
I wrote this php script to delete old files older than 24 hrs,
but it deleted all the files including newer ones:
<?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);
}
}
}
}
?>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您还可以通过在 *(通配符)后添加扩展名来指定文件类型,例如
对于 jpg 图像,请使用:
glob($dir."*.jpg")
对于 txt 文件,请使用:
glob( $dir."*.txt")
对于 htm 文件,请使用:
glob($dir."*.htm")
You can also specify file type by adding an extension after the * (wildcard) eg
For jpg images use:
glob($dir."*.jpg")
For txt files use:
glob($dir."*.txt")
For htm files use:
glob($dir."*.htm")
如果当前时间和文件的更改时间彼此相差在 86400 秒内,那么...
我认为这可能是您的问题。将其更改为>或 >= 并且它应该可以正常工作。
If the current time and file's changed time are within 86400 seconds of each other, then...
I think that may be your problem. Change it to > or >= and it should work correctly.
>
来代替。filemtime()
。>
instead.filemtime()
instead.我测试了两种方法来比较速度。选项 A 反复快了 50% 左右。我在一个包含大约 6000 个文件的文件夹上运行了这个。
选项A
选项B
它还检查是否返回文件创建时间。在某些系统上,返回创建时间存在问题。因此,我想确保如果系统不返回时间戳,它不会删除所有文件。
I tested two methods to compare the speed. Option A was repeatedly about 50% faster. I ran this on a folder with about 6000 files.
Option A
Option B
It also checks whether a file creation time was returned. On some systems, there are problems with returning the creation time. Therefore I wanted to make sure that it does not delete all files if the system does not return a timestamp.
工作正常
working fine