在PHP中,如何在不删除目录本身的情况下每24小时删除目录中的所有文件?它必须在PHP中,它不能成为Cron Job。自动删除目录中的所有文件?
你能否提供你的代码背后的解释?我仍然在学习PHP。
谢谢!
在PHP中,如何在不删除目录本身的情况下每24小时删除目录中的所有文件?它必须在PHP中,它不能成为Cron Job。自动删除目录中的所有文件?
你能否提供你的代码背后的解释?我仍然在学习PHP。
谢谢!
没有办法在不使用PHP的情况下在PHP中执行此操作。抱歉。
开玩笑,但如果你想这样做,你需要某种任务调度器(如cron)。
也就是说,您可以将个人计算机编程为每24小时向服务器发送一次请求,但您必须手动执行此操作或在本地安排任务。
我的观点是,你需要cron,但它不需要与PHP文件在同一主机上运行。
设置一个Cron Job每24小时自动运行脚本。你如何做到这一点完全取决于你的主机。还有,你可以使用这个网站:http://www.google.nl/search?q=cronjobs+webservice
祝你好运!
很久以前,我做了类似的事情。这是一个可怕的想法,但你可以有一个文件存储你的目录最后一次被清除。每次用户访问相关页面时,请在PHP脚本中检查此文件(您也可以检查修改的时间)。如果它足够远,请更新文件并运行删除脚本。
缺点:
由于运行删除文件,
function delete_contents($dirpath) {
$dir = opendir($dirpath);
if($dir) {
while(($s = readdir($dir)) !== false) {
if(is_dir($s)) {
delete_contents($s);
rmdir($s);
} else {
unlink($s);
}
}
closedir($dir);
}
}
与此非常仔细。在原始服务器设置上,delete_contents('/')
将删除每个文件。
没有的cron你不得不这样代码添加到一个普遍要求的页面:
$scheduledclean = strtotime("midnight"); // 00:00:00 of the current day
$lastcleanfile = '/path/to/my/app/lastclean';
$lastcleantime = (file_exists($lastcleanfile)) ? filemtime($lastcleanfile) : 0;
$curtime = time();
if(($curtime > $scheduledclean) && ($lastcleantime < $scheduledclean)) {
touch($lastcleanfile); //touch first to prevent multiple executions
// file cleanup code here
}
在第一次请求午夜后的页面清理将火过,但取得了倒霉的人只要清理需要,请求可能会延迟其页面的服务时间。你可以通过运行清理作为一个后台shell命令,如shell_exec('rm -rf /path/to/dir/* &');
“它必须在PHP中,它不能在PHP中”:相当的挑战.... – Dave 2013-03-06 19:17:59
感谢您的收获@Dave。问题已被编辑。 – 2013-03-06 19:18:46
如何删除目录然后重新创建它?您只能删除内容,但更容易删除该批次。 – Dave 2013-03-06 19:19:26