Moodle中批量更新多课程共享SCORM内容的技术问题
解决Moodle批量更新共享SCORM包的问题
你直接修改mdl_scorm和mdl_scorm_scoes表后仍加载旧包,是因为遗漏了以下关键环节:
文件存储关联表:SCORM包的实际文件映射存在
mdl_files表中,你需要更新对应记录的contenthash、pathnamehash、filename字段,确保和新包的哈希值、文件名匹配。同时要把新SCORM包解压后的内容替换到服务器的实际存储路径(默认是moodledata/filedir/下按哈希拆分的目录)。缓存未清理:Moodle会缓存SCORM的配置和路径信息,即使数据库字段更新,缓存没清还是会读取旧数据。需要做两步:
- 后台手动清理:进入「站点管理」→「缓存」→「清除缓存」,选择SCORM相关缓存项;
- 命令行彻底清理:执行
php admin/cli/purge_caches.php清除全局缓存。
可选:用户跟踪数据处理:如果旧包有用户学习记录,新包结构变化时可能需要调整
mdl_scorm_scoes_track表,但这不是旧包加载的直接原因。
更稳妥的程序化方案建议:
- 不要直接修改数据库,改用Moodle内置的SCORM API(比如
scorm_update_package()类方法),官方API会自动处理所有关联表和触发必要的系统钩子。 - 编写自定义CLI脚本,遍历所有共享该SCORM包的课程,调用官方API完成批量更新,避免遗漏任何关联数据。
内容的提问来源于stack exchange,提问作者franzke
相关产品推荐
相关产品推荐

