在 PHP 中,如何在不删除目录本身的情况下每 24 小时删除目录中的所有文件?它必须在 PHP 中,不能是 Cron Job。
您能否也提供代码背后的解释?我还在学习PHP。
谢谢!
在 PHP 中,如何在不删除目录本身的情况下每 24 小时删除目录中的所有文件?它必须在 PHP 中,不能是 Cron Job。
您能否也提供代码背后的解释?我还在学习PHP。
谢谢!
如果不使用 PHP,则无法在 PHP 中执行此操作。对不起。
开玩笑,但如果你想这样做,你需要某种任务调度程序(如 cron)。
也就是说,您可以对您的个人计算机进行编程,使其每 24 小时向服务器发送一次请求,但您要么必须手动完成,要么在本地安排任务。
我的意思是,您需要 cron,但它不需要与 PHP 文件在同一主机上运行。
如果没有 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 脚本中检查该文件(您也可以检查修改时间)。如果已经足够远,请更新文件并运行您的删除脚本。
缺点:
至于删除文件,
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 作业以每 24 小时自动运行一次脚本。您必须如何执行此操作完全取决于您的主机。您还可以使用以下网站:http ://www.google.nl/search?q=cronjobs+webservice
祝你好运!