找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 248|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2022-9-1 11:24
  • 签到天数: 50 天

    连续签到: 1 天

    [LV.5]常住居民I

    766680204
    发表于 2021-6-10 16:59:49 | 显示全部楼层 |阅读模式

    您需要 登录 才可以下载或查看,没有账号?立即注册

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

    [color=#222222,那么有没有方法自动清理临时文件夹呢?

    [color=#222222,以下代码就是一个简单定时清理文件夹下文件的php代码。
    [color=#222222,ps:这个代码如果不重启网站会一直执行下去,所以只用作于本地环境测试,请别在网站上测试。

    1. <?php
    2. ignore_user_abort(); //客户端断开时,可以让脚本继续在后台执行
    3. set_time_limit(0); //忽略php.ini设置的脚本运行时间限制
    4. $interval = 5*60; //设置执行周期,单位为秒,5分钟为 5*60=300
    5. do{
    6. $dir = "temp/"; //你的临时目录位置
    7. $handle=opendir("{$dir}/");
    8. while (false !== ($file=readdir($handle))) {
    9. if ($file!="." && $file!=".." && !is_dir("{$dir}/{$file}")) {
    10. @unlink ("{$dir}/{$file}");
    11. }
    12. }
    13. closedir($handle); //关闭由 opendir() 函数打开的目录
    14. sleep($interval); //执行一个周期后,休眠$interval时间,休眠结束后脚本继续执行
    15. }while(true); //周期性执行脚本
    复制代码
    [color=#222222,根据网上的一个思路来的,建一个flag.txt文件,在里面输入1或者0,“0”表示停止执行,“1”表示继续执行。这样的话就可以开始和停止了。

    1. <?php
    2. $flag = 1; //将执行标志设置为1,默认为执行
    3. ignore_user_abort(); //客户端断开时,可以让脚本继续在后台执行
    4. set_time_limit(0); //忽略php.ini设置的脚本运行时间限制
    5. $interval = 5*60; //设置执行周期,单位为秒,5分钟为 5*60=300
    6. do{
    7. $flagfile = "flag.txt"; //标志放置在文件“flag.txt”中。“0”表示停止执行,“1”表示继续执行
    8. if(file_exists($flagfile) && is_readable($flagfile)) { //读取文件内容
    9. $fh = fopen($flagfile,"r");
    10. while (!feof($fh)) {
    11. $flag = fgets($fh); //存储标志
    12. }
    13. fclose($fh);
    14. }
    15. $dir = "temp/"; //你的临时目录位置
    16. $handle=opendir("{$dir}/");
    17. while (false !== ($file=readdir($handle))) {
    18. if ($file!="." && $file!=".." && !is_dir("{$dir}/{$file}")) {
    19. @unlink ("{$dir}/{$file}");
    20. }
    21. }
    22. closedir($handle); //关闭由 opendir() 函数打开的目录
    23. sleep($interval); //执行一个周期后,休眠$interval时间,休眠结束后脚本继续执行
    24. }while($flag);
    复制代码
    php删除文件夹及其文件夹下所有文件

    1. <?
    2. function deldir($dir) {
    3. //先删除目录下的文件:
    4. $dh=opendir($dir);
    5. while ($file=readdir($dh)) {
    6. if($file!="." && $file!="..") {
    7. $fullpath=$dir."/".$file;
    8. if(!is_dir($fullpath)) {
    9. unlink($fullpath);
    10. } else {
    11. deldir($fullpath);
    12. }
    13. }
    14. }
    15. closedir($dh);
    16. //删除当前文件夹:
    17. if(rmdir($dir)) {
    18. return true;
    19. } else {
    20. return false;
    21. }
    22. }
    23. ?>
    复制代码
    [color=#222222,实例:删除某个文件夹下的所有“.svn”文件夹(包括其内容也要被删除)

    1. <?php
    2. function delsvn($dir) {
    3. $dh=opendir($dir);
    4. //找出所有".svn“ 的文件夹:
    5. while ($file=readdir($dh)) {
    6. if($file!="." && $file!="..") {
    7. $fullpath=$dir."/".$file;
    8. if(is_dir($fullpath)) {
    9. if($file==".svn"){
    10. delsvndir($fullpath);
    11. }else{
    12. delsvn($fullpath);
    13. }
    14. }
    15. }
    16. }
    17. closedir($dh);
    18. }
    19. function delsvndir($svndir){
    20. //先删除目录下的文件:
    21. $dh=opendir($svndir);
    22. while($file=readdir($dh)){
    23. if($file!="."&&$file!=".."){
    24. $fullpath=$svndir."/".$file;
    25. if(is_dir($fullpath)){
    26. delsvndir($fullpath);
    27. }else{
    28. unlink($fullpath);
    29. }
    30. }
    31. }
    32. closedir($dh);
    33. //删除目录文件夹
    34. if(rmdir($svndir)){
    35. return true;
    36. }else{
    37. return false;
    38. }
    39. }

    40. $dir=dirname(__FILE__);
    41. //echo $dir;
    42. delsvn($dir);
    43. ?>
    复制代码


    回复

    使用道具 举报

    网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

    GMT+8, 2024-11-2 10:17

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表