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; }
当然,也可以使用非递归实现的目录和文件删除函数,用栈结构避免了深递归调用,适合大量文件和深层目录,性能更稳健且不易卡死。
PBOOTCMS在运行时间久了之后,有可能会造成服务器卡顿。通过慢日志发现,是file.php中的path_delete() 函数...
webp能将原图压缩30%左右还能保持清楚。所以正在被越来越多的人喜欢。pb要增这个功能,第一步:找到ueditor...
在外贸网站建设中,我们会遇到有客户说需要用户前端留言的时候可以上传自定义的文件或者图片等资料。那么这...
如果新建了一个网站为中文版,安装到根目录下。然后复制了中文版的数据和内容,安装到子目录下作为英文站点...