Discuz定时任务通过后台“工具-计划任务”设置,支持内置与自定义任务,依赖用户访问触发,需配合服务器cron访问cron.php提升可靠性,常见用途包括缓存更新、邮件发送等。

Discuz 的定时任务(也叫计划任务)主要用于自动执行一些系统维护或内容更新操作,比如论坛数据更新、缓存清理、邮件推送、主题推送等。合理设置和管理计划任务,能提升论坛运行效率和用户体验。
一、Discuz 定时任务的设置方法
登录网站后台后,按以下步骤添加或配置计划任务:
- 进入后台管理:使用管理员账号登录 Discuz 后台(通常为 /admin.php)。
- 找到计划任务入口:在左侧菜单中点击“工具” → “计划任务”。
-
启用或创建任务:
- 系统自带的任务如“更新首页缓存”、“清理游客缓存”等,可直接编辑并开启。
- 点击“添加新任务”,填写任务名称、执行脚本路径、执行周期等信息。
- 设置执行周期:支持按分钟、小时、天、周等周期设定,例如每30分钟执行一次,或每天凌晨2点执行。
- 保存并启用:确保“启用状态”选择“是”,然后提交保存。
二、计划任务的常见类型与用途
Discuz 内置了一些常用任务,了解它们有助于更好管理:
- 更新主题浏览数:将缓存中的浏览次数写入数据库,避免数据丢失。
- 清理过期会话:定期清除无效的用户登录记录,节省数据库空间。
- 发送队列邮件:若开启了邮件队列功能,该任务会定时发送待发邮件。
- 生成首页HTML:适用于开启静态化的站点,定时生成静态页面以提升访问速度。
三、如何确保定时任务正常运行
Discuz 的计划任务依赖用户访问触发,不是真正的服务器级 cron,因此需注意:
- 依赖前台访问:任务不会由服务器主动执行,而是当有用户访问论坛时,系统检查是否到执行时间,再触发任务。
- 配合服务器 Cron 提高可靠性:可在服务器上设置真实 cron,定期访问触发 URL,例如: curl "https://你的域名/cron.php" >/dev/null 2>&1
- 检查任务日志:在“计划任务”页面查看“上次执行时间”和“下次执行时间”,判断是否按时运行。
- 避免任务冲突:不要设置过于频繁的任务,防止影响服务器性能。
四、自定义计划任务的注意事项
如果需要执行自定义 PHP 脚本,可通过以下方式实现:
- 将脚本放入 /source/cron/ 目录,命名如 mytask.php。
- 在后台添加任务时,选择“脚本文件名”为 mytask。
- 确保脚本符合 Discuz 的调用规范,使用正确的数据库连接和函数库。
- 调试时可手动访问 https://域名/cron.php?cronid=任务ID 查看执行结果。
基本上就这些。只要理解 Discuz 计划任务是“伪定时”机制,结合服务器 cron 可实现更稳定调度,日常管理也就清晰多了。










