如何在 x 时间后(假设 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);
}
}
}
}
?>
Comment: 1.本例使用正则表达式/\.txt$/i
,这意味着只有具有扩展名的文件txt
将被删除。 “$”符号意味着该文件名必须以字符串“.txt”结尾。标志“i”表示比较不区分大小写。更多关于预匹配()功能。
除此之外你还可以使用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);
}
}
}
}
?>
Comment: 这个例子看起来更明显。的结果strripos()
也可以通过两个功能的组合来实现:strrpos(strtolower($file), '.txt')
,但是,恕我直言,在代码中使用较少的函数以使其更具可读性和更小是一个很好的规则。请仔细阅读strripos()函数(返回值块)页面上的警告。
还有一则重要通知:如果您使用的是 UNIX 系统,由于文件权限的原因,文件删除可能会失败。你可以查一下手册chmod()功能。
祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)