共计 1120 个字符,预计需要花费 3 分钟才能阅读完成。
原帖: https://hostloc.com/thread-1030708-1-1.html 本人测试环境: Bt-Panel 7.7.0, Debian10 amd64 经查看本地 /www/server/panel 目录下的面板代码以及与老哥交流(原帖子回复), 确认原帖老哥拿到的代码并非宝塔目前主版本代码(可能是开发版). 分析 宝塔目前主版本代码会执行 /www/server/panel/BT-Task 作为 BT-Task service. /www/server/panel/BT-Task 引入了 /www/server/panel/task.py 并执行其中的 main 函数. 在 task.py 中, main 函数中会开启多个线程去调用其他任务, 最后主进程交由 startTask 函数进行处理. startTask 是个死循环函数, 它会先执行从面板数据库中拿取的任务, 之后调用 siteEdate 函数进行网站到期处理. siteEdate 函数正常来说应该在一天内只执行一次 /www/server/panel/script/site_task.py , 但是很不幸宝塔程序员逻辑写错了:
复制代码 这将会导致在第一次执行后, 每次调用 siteEdate 函数时都会继续执行 /www/server/panel/script/site_task.py . 更糟糕的是, /www/server/panel/script/site_task.py 中似乎也没有对此做处理(判断时间), 也就是说 site_task.py 会不断执行一系列没有必要的检测. 修复 建议官方尽快解决, 目前可用临时修复补丁进行修复, 但 不保证完全可靠(补丁基于 7.7.0 并且未经过长期及生产环境测试), 建议谨慎使用.
复制代码 — 更新链接后帖子重开 |
网友回复:
注册: 这是专业人士,
flyqie: 2 年前就有人反应了 现在估计人家也懒得修复
aes: 支持企鹅大佬
周润发: 链接已更新~
Backkom:
flyqie: 我来试试,看能不能解决问题
小旭: 另外其实还可以通过给 oldEdate 赋值为 mEdate 实现,宝塔 github 上代码就是这么做的。这样可以避免每几秒就读取一次文件,但是因为考虑到 site_task.py 不可控,所以就没用这个方法。
imes: 为啥非要用 BT?
flyqie: 真男人收撸,要什么 bt
注册: 我自己平常很少用宝塔,生产环境更不会去用。今天正好看到有这个帖子,抱着好奇的心理排查了一下。记得之前还发现过宝塔有个强关联系统语言的硬盘大小显示 bug。也是论坛看到的帖子,不知道现在解没解决。