当前位置:首页 > 代码学习>php定时删除文件夹下文件

php定时删除文件夹下文件

代码学习 / 星之宇 / 2011-9-21 15:04 / 浏览:14922 / 评论:0

有的时候网站缓存文件夹里生成的临时文件越来越多,而长时间不清理就会造成文件夹下有上万个缓存文件,可能会使ftp工具多无法进入其文件夹。使临时文件无法删除。

那么有没有方法自动清理临时文件夹呢?
以下代码就是一个简单定时清理文件夹下文件的php代码。
ps:这个代码如果不重启网站会一直执行下去,所以只用作于本地环境测试,请别在网站上测试。
<?php
ignore_user_abort(); //客户端断开时,可以让脚本继续在后台执行
set_time_limit(0);   //忽略php.ini设置的脚本运行时间限制
$interval = 5*60;      //设置执行周期,单位为秒,5分钟为 5*60=300
do{
  $dir = "temp/";   //你的临时目录位置
  $handle=opendir("{$dir}/");
  while (false !== ($file=readdir($handle))) {
    if ($file!="." && $file!=".."  && !is_dir("{$dir}/{$file}")) {
      @unlink ("{$dir}/{$file}");
               }
       }
    closedir($handle); //关闭由 opendir() 函数打开的目录
    sleep($interval);   //执行一个周期后,休眠$interval时间,休眠结束后脚本继续执行  
}while(true);     //周期性执行脚本


根据网上的一个思路来的,建一个flag.txt文件,在里面输入1或者0,“0”表示停止执行,“1”表示继续执行。这样的话就可以开始和停止了。
<?php
$flag = 1; //将执行标志设置为1,默认为执行
ignore_user_abort(); //客户端断开时,可以让脚本继续在后台执行
set_time_limit(0);   //忽略php.ini设置的脚本运行时间限制
$interval = 5*60;      //设置执行周期,单位为秒,5分钟为 5*60=300
do{
    $flagfile = "flag.txt";   //标志放置在文件“flag.txt”中。“0”表示停止执行,“1”表示继续执行
    if(file_exists($flagfile) && is_readable($flagfile)) { //读取文件内容
        $fh = fopen($flagfile,"r");        
        while (!feof($fh)) {
            $flag = fgets($fh);   //存储标志
        }      
        fclose($fh);
    }
  $dir = "temp/";   //你的临时目录位置
  $handle=opendir("{$dir}/");
  while (false !== ($file=readdir($handle))) {
    if ($file!="." && $file!=".."  && !is_dir("{$dir}/{$file}")) {
      @unlink ("{$dir}/{$file}");
               }
       }
    closedir($handle); //关闭由 opendir() 函数打开的目录
    sleep($interval);   //执行一个周期后,休眠$interval时间,休眠结束后脚本继续执行  
}while($flag);
  

目前有 0 条评论

    • QQ
    • 填好QQ,点击获取自动填写昵称和邮箱
    • 昵称
    • 邮箱
    • 网址