加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP,从目录中搜索和删除文件 – 性能

发布时间:2020-12-13 17:02:18 所属栏目:PHP教程 来源:网络整理
导读:我想删除目录中的缓存文件,该目录最多可包含50.000个文件.我目前使用这个功能. // Deletes all files in $type directory that start with $start function clearCache($type,$start) { $open = opendir($GLOBALS['DOC_ROOT']."/cache/".$type."/"); while(
我想删除目录中的缓存文件,该目录最多可包含50.000个文件.我目前使用这个功能.

// Deletes all files in $type directory that start with $start

    function clearCache($type,$start)
        {
        $open = opendir($GLOBALS['DOC_ROOT']."/cache/".$type."/");
        while( ($file = readdir($open)) !== false ) 
            {
            if ( strpos($file,$start)!==false ) 
                {
                unlink($GLOBALS['DOC_ROOT']."/cache/".$type."/".$file);
                }
            }
        closedir($open);        
        }

这工作正常,速度很快,但有没有更快的方法呢? (scan_dir似乎很慢).我可以明显地将缓存移动到内存中.

谢谢,
村庄

解决方法

你可能想看看 glob函数,因为它可能更快……它取决于C库的glob命令来完成它的工作.

我没有测试过这个,但我认为这样可行::

foreach (glob($GLOBALS['DOC_ROOT']."/cache/".$type."/".$start) as $file) {
    unlink($GLOBALS['DOC_ROOT']."/cache/".$type."/".$file);
}

编辑:我不确定$file是文件名还是整个路径. glob的文档只暗示文件名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读