PBOOTCMS在運(yùn)行時(shí)間久了之后,有可能會(huì)造成服務(wù)器卡頓。
通過(guò)慢日志發(fā)現(xiàn),是file.php中的path_delete() 函數(shù)會(huì)導(dǎo)致的。
可以使用以下改進(jìn)過(guò)的代碼,使用中。
/** * 刪除目錄及目錄下所有文件或刪除指定文件 * * @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; }
當(dāng)然,也可以使用非遞歸實(shí)現(xiàn)的目錄和文件刪除函數(shù),用棧結(jié)構(gòu)避免了深遞歸調(diào)用,適合大量文件和深層目錄,性能更穩(wěn)健且不易卡死。
我們的網(wǎng)站后臺(tái)默認(rèn)有一個(gè)留言的提醒數(shù)據(jù):但是如果要有多個(gè)留言表單,那么我們自定義的留言表單卻沒(méi)有這個(gè)...
在之前的文章中,我們有講過(guò),如何使用擴(kuò)展字段來(lái)此入HTML代碼并添加預(yù)覽功能。文章鏈接可查看:https://ww...
以下內(nèi)容來(lái)源于PB交流QQ群。第一:NGINX配置。#攔截常見(jiàn)敏感后臺(tái)路徑訪問(wèn)(例如dede、admin、wp-login等),...
在外貿(mào)網(wǎng)站建設(shè)中,我們會(huì)遇到有客戶說(shuō)需要用戶前端留言的時(shí)候可以上傳自定義的文件或者圖片等資料。那么這...