php定时删除文件夹下文件(清理缓存文件)

  那么有没有方法自动清理临时文件夹呢?

  以下代码就是一个简单定时清理文件夹下文件的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);

  php删除文件夹及其文件夹下所有文件

  

复制代码 代码如下:

  <?

  function deldir($dir) {

  //先删除目录下的文件:

  $dh=opendir($dir);

  while ($file=readdir($dh)) {

  if($file!="." && $file!="..") {

  $fullpath=$dir."/".$file;

  if(!is_dir($fullpath)) {

  unlink($fullpath);

  } else {

  deldir($fullpath);

  }

  }

  }

  closedir($dh);

  //删除当前文件夹:

  if(rmdir($dir)) {

  return true;

  } else {

  return false;

  }

  }

  ?>

  实例:删除某个文件夹下的所有“.svn”文件夹(包括其内容也要被删除).

  

复制代码 代码如下:

  <?php

  function delsvn($dir) {

  $dh=opendir($dir);

  //找出所有".svn“ 的文件夹:

  while ($file=readdir($dh)) {

  if($file!="." && $file!="..") {

  $fullpath=$dir."/".$file;

  if(is_dir($fullpath)) {

  if($file==".svn"){

  delsvndir($fullpath);

  }else{

  delsvn($fullpath);

  }

  }

  }

  }

  closedir($dh);

  }

  function delsvndir($svndir){

  //先删除目录下的文件:

  $dh=opendir($svndir);

  while($file=readdir($dh)){

  if($file!="."&&$file!=".."){

  $fullpath=$svndir."/".$file;

  if(is_dir($fullpath)){

  delsvndir($fullpath);

  }else{

  unlink($fullpath);

  }

  }

  }

  closedir($dh);

  //删除目录文件夹

  if(rmdir($svndir)){

  return true;

  }else{

  return false;

  }

  }

  $dir=dirname(__FILE__);

  //echo $dir;

  delsvn($dir);

  ?>