如何在 x-time 后(比如 24 小时后)自动删除子目录下的所有文件 - 而无需使用来自服务器或 pl 的 cronjob 命令。您如何仅使用 PHP 代码或仅访问页面而不单击某些内容并自动运行命令来执行此操作。
最佳答案
对我第一个回答的最后评论的回应。我要编写代码示例,所以我创建了另一个答案,而不是再添加一条评论。
要删除带有自定义扩展名的文件,您必须实现代码:
<?php
$path = dirname(__FILE__).'/files';
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ((time()-filectime($path.'/'.$file)) < 86400) { // 86400 = 60*60*24
if (preg_match('/\.txt$/i', $file)) {
unlink($path.'/'.$file);
}
}
}
}
?>
注释: 1. 这个例子使用了正则表达式/\.txt$/i
,也就是说,只有扩展名为txt
的文件将被删除。 '$' 符号表示文件名必须以字符串 '.txt' 结尾。标志“i”表示比较将不区分大小写。更多关于 preg_match()功能。
此外,您还可以使用 strripos()搜索具有特定扩展名的文件的功能。这是代码片段:
<?php
$path = dirname(__FILE__).'/files';
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ((time()-filectime($path.'/'.$file)) < 86400) { // 86400 = 60*60*24
if (strripos($file, '.txt') !== false) {
unlink($path.'/'.$file);
}
}
}
}
?>
评论:这个例子看起来更明显。 strripos()
的结果也可以通过组合两个函数来实现:strrpos(strtolower($file), '.txt')
,但是,恕我直言,这是一个在代码中使用较少的函数以使其更具可读性和更小的好规则。请仔细阅读 strripos() 函数(返回值 block )页面上的警告。
还有一个重要提示:如果您使用的是 UNIX 系统,由于文件权限的原因,文件删除可能会失败。您可以查看关于 chmod() 的手册功能。
祝你好运。
关于php - x 次后自动删除所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1921466/