帝国 CMS 后台慢怎么办
学完这篇,你能按顺序定位帝国 CMS(以 7.5 版为例)后台慢的具体原因,并通过关统计、加索引、清日志、升环境这几步把后台恢复到秒开水平。
第一步:先确认慢在哪个请求
打开后台首页,按 F12 打开浏览器开发者工具,切到 Network(网络)面板,刷新页面。看哪个请求耗时最长:通常是 e/admin/index.php 本身,或者它加载的 e/admin/adminstyle/... 里的某个 PHP 统计接口。如果 index.php 的 Waiting(TTFB) 高达几秒,说明是服务端 PHP/MySQL 慢;如果只是某张图片慢,那是静态资源问题。这一步得到的结果是:把“后台整体慢”缩小到具体文件或接口。
注意:不要只看浏览器总加载时间,要看 TTFB,否则容易误判成带宽问题。
第二步:关掉后台首页的信息统计
帝国 CMS 后台首页默认会统计各内容表、会员表、评论表的记录数,数据量大时每次刷新都要扫全表。进入后台左侧菜单「系统」→「系统设置」→「后台管理设置」,找到「后台首页显示信息统计」,改为「否」,保存。如果当前小版本没有这一项,直接编辑 e/admin/index.php,把调用统计函数的代码段用 // 注释掉,文件名通常是 include('../../e/class/connect.php') 之后那几行 $empire->gettotal() 调用。完成后刷新后台首页,TTFB 通常会从几秒降到几百毫秒。
注意:改核心文件前先备份
e/admin/index.php,否则升级或打补丁时容易被覆盖回慢状态。
第三步:给内容表加索引
后台慢很大一部分来自内容表 phome_ecms_news、phome_ecms_news_data_1 等缺少合适索引。进入「系统」→「数据表管理」→「管理数据表」,找到 phome_ecms_news,点「管理字段」,编辑 checked、newstime、classid 字段,把「索引」设为「是」并保存。也可以直接用 phpMyAdmin 或命令行执行:
ALTER TABLE `phome_ecms_news` ADD INDEX `idx_checked_newstime` (`checked`,`newstime`);
ALTER TABLE `phome_ecms_news` ADD INDEX `idx_classid` (`classid`);
执行后用 SHOW INDEX FROM phome_ecms_news; 确认索引已存在。这一步做完,后台列表、审核、刷新页面会明显变快。
注意:百万级数据表加索引会锁表,务必在低峰期操作,并先
mysqldump备份该表。
第四步:清理日志表和无用数据
帝国 CMS 的后台登录日志、失败日志会无限增长。进入「系统」→「数据表管理」→「管理数据表」,找到 phome_enewslog、phome_enewsloginfail、phome_ecms_news_check,点右侧「清空表」或「优化表」。如果后台点不动,用 SQL:
TRUNCATE TABLE `phome_enewslog`;
TRUNCATE TABLE `phome_enewsloginfail`;
OPTIMIZE TABLE `phome_ecms_news`;
同时在「系统」→「系统设置」→「后台管理设置」里,把「是否记录后台操作日志」设为「否」,减少每次点击都写日志。这一步得到的结果是:日志表和碎片带来的额外 I/O 被消除。
注意:
phome_ecms_news_check是待审核表,清空前确认里面没有还没审核的文章。
第五步:升级 PHP 和 MySQL 并开 OPcache
帝国 CMS 7.5 建议运行在 PHP 7.4 上,比 PHP 5.6 快一倍以上。在服务器面板或 php.ini 中确认:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
MySQL 如果是 InnoDB,把 innodb_buffer_pool_size 设为物理内存的 50%~70%,例如 8G 内存设为 innodb_buffer_pool_size=5G,改完重启 MySQL。这一步做完,后台所有 PHP 请求都会少走一遍编译,数据库读盘也减少。
注意:PHP 8 与帝国 CMS 7.5 部分老插件不兼容,不要直接升到 PHP 8,先升到 7.4 最稳。
第六步:关掉后台的远程检查和无关功能
后台首页可能去请求帝国官网检查新版本,服务器无法外网时会卡到超时。进入「系统」→「系统设置」→「系统参数设置」,把「检查新版本」关掉。再到「后台管理设置」里关闭「后台首页显示服务器信息」「后台首页显示官方信息」。如果仍有远程请求,用浏览器 Network 面板看具体 URL,再到 e/admin/index.php 或 e/class/connect.php 里搜索该域名并注释。
注意:关闭远程检查不会影响程序更新,需要更新时手动去帝国官网下载补丁即可。
小结
- 先用 F12 的 Network 面板看 TTFB,确认是服务端慢还是静态资源慢。
- 关掉后台首页信息统计,减少每次刷新扫全表。
- 给
phome_ecms_news的checked、newstime、classid加索引,低峰期操作并备份。 - 清空
phome_enewslog、phome_enewsloginfail,关闭后台操作日志。 - PHP 升到 7.4 并开 OPcache,MySQL 调大
innodb_buffer_pool_size。 - 关闭后台“检查新版本”等远程请求,避免外网超时拖慢首页。
原文链接:https://www.gj0.com/thread-885.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。