新闻中心 网络推广 网站建设 优化推广 首页>新闻>网站建设

pbootcms占用让服务器卡顿的问题。

时间:2025-06-20   访问量:0

PBOOTCMS在运行时间久了之后,有可能会造成服务器卡顿。

通过慢日志发现,是file.php中的path_delete() 函数会导致的。

可以使用以下改进过的代码,使用中。

/**
 * 删除目录及目录下所有文件或删除指定文件
 *
 * @param string $path 待删除目录路径
 * @param bool $delDir 是否删除目录,true 删除目录,false 仅清空目录
 * @param array $exFile 排除的文件/目录名
 * @return bool 是否成功
 */
function path_delete($path, $delDir = false, $exFile = array())
{
    $result = true;

    if (!file_exists($path)) {
        return true; // 不存在直接返回成功
    }

    if (is_dir($path)) {
        $dirs = scandir($path);
        if ($dirs !== false) {
            foreach ($dirs as $value) {
                if ($value === '.' || $value === '..' || in_array($value, $exFile)) {
                    continue;
                }

                $dir = $path . '/' . $value;

                // 递归删除子目录或文件
                $subResult = is_dir($dir) ? path_delete($dir, $delDir, $exFile) : unlink($dir);

                if (!$subResult) {
                    $result = false;
                    error_log("Failed to delete: $dir");
                }
            }

            // 删除自身目录
            if ($delDir && !rmdir($path)) {
                $result = false;
                error_log("Failed to remove directory: $path");
            }
        } else {
            $result = false;
            error_log("Failed to scan directory: $path");
        }
    } else {
        if (!unlink($path)) {
            $result = false;
            error_log("Failed to delete file: $path");
        }
    }

    return $result;
}


当然,也可以使用非递归实现的目录和文件删除函数,用栈结构避免了深递归调用,适合大量文件和深层目录,性能更稳健且不易卡死。

上一篇:在用PBCMS的时候,后台IP黑名单字数限制修改

下一篇:没有了!

服务咨询
1对1咨询,专业客服为您解疑答惑
联系销售
15899750475
在线咨询
联系在线客服,为您解答所有的疑问
ARE YOU INTERESTED IN ?
感兴趣吗?

有关我们服务的更多信息,请联系项目经理

15899750475 杨先生