You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Moodle-Cron-API添加定时任务异常,请求排查协助

解决Moodle本地插件定时任务不显示、不执行的问题

问题背景

  • 插件根目录为/local/mod_hygene,已创建classes/task/cut_my_toe_nails.php和db/tasks.php配置定时任务
  • 预期任务每年1、7月每分钟执行,但Moodle后台「站点管理→服务器→定时任务」页面看不到该任务,手动触发Cron也无do输出
  • 插件可在「站点管理→插件→插件概览」的本地插件列表中被识别

解决方案

1. 修正命名空间与文件路径的匹配错误

本地插件的命名空间规则为local_插件名,原代码中命名空间mod_hygene\task不符合规范,导致Moodle无法加载任务类。

修改/local/mod_hygene/classes/task/cut_my_toe_nails.php:

namespace local_mod_hygene\task;

/**
* An example of a scheduled task.
*/
class cut_my_toe_nails extends \core\task\scheduled_task {

/**
* Return the task's name as shown in admin screens.
*
* @return string
*/
public function get_name() {
return get_string('cutmytoenails', 'local_mod_hygene');
}

/**
* Execute the task.
*/
public function execute() {
// Apply fungus cream.
// Apply chainsaw.
// Apply olive oil.
mtrace('do'); // 替换echo为mtrace,适配Moodle Cron的输出机制
}
}

2. 修正任务配置文件的类路径

同步修改/local/mod_hygene/db/tasks.php中的classname,与修正后的命名空间一致:

$tasks = [
[
'classname' => 'local_mod_hygene\task\cut_my_toe_nails',
'blocking' => 0,
'minute' => '*',
'hour' => '*',
'day' => '*',
'month' => '1,7',
'dayofweek' => '*',
],
];

注意:确保tasks.php路径为/local/mod_hygene/db/tasks.php,而非原描述中的/mod_hygene/db/tasks.php

3. 添加字符串翻译支持

在/local/mod_hygene/lang/en/local_mod_hygene.php中创建或添加对应翻译字符串(若文件不存在则新建):

$string['cutmytoenails'] = 'Cut my toe nails task';

4. 清除Moodle缓存

Moodle会缓存任务定义,必须清除缓存才能识别新配置:

  • 后台操作:进入「站点管理→开发→清除缓存」
  • CLI命令(Docker容器内执行):
php admin/cli/purge_caches.php

5. 验证Docker环境下的Cron执行

手动触发测试

执行以下命令手动触发Cron,检查是否输出do:

docker exec -it <你的Moodle容器名称> php admin/cli/cron.php

配置自动Cron(可选)

Docker默认不会自动运行Moodle Cron,需添加定时任务:

  1. 进入容器:
docker exec -it <你的Moodle容器名称> bash
  1. 编辑crontab:
crontab -e
  1. 添加规则(每分钟执行一次Cron):
* * * * * www-data php /var/www/html/admin/cli/cron.php > /dev/null 2>&1

6. 临时调整调度规则(测试用)

原配置中month => '1,7'限制任务仅在1月和7月执行,若当前不在这两个月份,任务不会触发。测试时可临时将month改为*,验证正常后再改回原配置。


内容的提问来源于stack exchange,提问作者Khabbab Zakaria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:01:40