Windows 下部署 ThinkPHP6 定时任务需用「任务计划程序」替代 cron,先创建命令类(如 cron:clean-temp),再编写调用该命令的 .bat 脚本,最后在任务计划中配置自动执行并记录日志。

Windows 环境下部署 ThinkPHP6 定时任务,核心是绕过 Linux 的 cron,改用系统自带的「任务计划程序」来周期性调用 PHP 命令行。整个过程不依赖外部服务或复杂扩展,只要 PHP 环境可用、项目可执行,就能稳定运行。
准备可执行的命令行任务
先确保你的业务逻辑已封装为 ThinkPHP6 的命令行指令(推荐方式):
- 使用
php think make:command CleanTemp创建命令类,例如app\command\CleanTemp - 在
configure()中设名称,如$this->setName('cron:clean-temp') - 在
execute()中写实际逻辑,比如清空runtime/cache或发邮件 - 测试是否可用:
php think cron:clean-temp,成功输出即表示指令就绪
编写批处理脚本(.bat)
新建一个 run_cron.bat 文件,内容如下(注意路径按你实际情况修改):
@echo off D: cd \www\myproject "C:\php\php.exe" think cron:clean-temp >> "C:\www\myproject\runtime\log\cron.log" 2>&1
- 第一行切换到项目所在盘符(如 D:)
- 第二行进入项目根目录(必须是
think文件所在位置) - 第三行调用本地 PHP 解释器执行指令;
>>追加日志,便于排查 - 确保
C:\php\php.exe是你实际安装的 PHP 路径(可用where php查看)
配置 Windows 任务计划程序
打开「任务计划程序」→「创建基本任务」,按向导填写:
- 名称:例如 “TP6 清理临时文件”
- 触发器:选“每天”或“每 10 分钟”,起始时间建议设为整点后 1–2 分钟(避开高峰)
-
操作:选“启动程序”,程序/脚本填
run_cron.bat的完整路径(如D:\www\myproject\run_cron.bat) - 安全选项:勾选“不管用户是否登录都要运行”,并勾选“不存储密码”(若需访问网络资源,再考虑保存凭据)
完成后,右键该任务 → “运行”,检查 runtime\log\cron.log 是否有新记录,确认执行成功。
注意事项与排错要点
常见问题往往出在环境隔离和权限上:
- PHP 脚本中用
__DIR__或getcwd()获取路径可能不准,建议在命令类中用App::getRuntimePath()或绝对路径操作文件 - 如果任务失败但无报错,先手动双击
.bat文件运行,看 CMD 窗口是否弹出错误(如“找不到指定模块”说明缺少 DLL,需补全 Visual C++ 运行库) - 涉及数据库或 Redis 的任务,确保命令行模式下的配置与 Web 模式一致(特别是
.env中的DB_HOST、REDIS_HOST) - 避免在任务中使用
exit或未捕获异常,否则会导致后续任务中断
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











