如何在PHP中每24小时删除一个目录中的所有文件而不删除目录本身?它必须是PHP,它不能是Cron Job。
您能否在代码背后提供解释?我还在学习PHP。
谢谢!
答案 0 :(得分:3)
如果不使用PHP,就无法在PHP中执行此操作。遗憾。
开玩笑,但如果你想这样做,你需要某种任务调度程序(如cron)。
也就是说,您可以对您的个人计算机进行编程,以便每24小时将请求发送到服务器,但您可能需要手动执行此操作或在本地安排任务。
我的观点是,您需要cron,但它不需要与PHP文件在同一主机上运行。
答案 1 :(得分:2)
如果没有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/* &');
答案 2 :(得分:1)
很久以前我做过类似的事情。这是一个糟糕的主意,但您可以拥有一个存储目录清除时间的文件。每次用户访问相关页面时,请在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('/')
将删除每个文件。
答案 3 :(得分:0)
设置Cron Job以每24小时自动运行脚本。你如何做到这一点完全取决于你的主人。您还可以使用以下网站:http://www.google.nl/search?q=cronjobs+webservice