在 CentOS 上给 ThinkPHP 项目配定时任务,其实是个挺常见的需求。流程不算复杂,把下面几个步骤走一遍,基本就能跑起来。

-
编写定时任务脚本
先在项目里创建一个命令行脚本,比如app/command/MyTask.php。这个脚本负责定义定时任务的具体逻辑,内容大致如下:namespace app\command; use think\console\Command; use think\console\Input; use think\console\Output; class MyTask extends Command { protected function configure() { // 设置命令名称和描述 $this->setName('mytask') ->setDescription('Describe the task here'); } protected function execute(Input $input, Output $output) { // 这里是定时任务的逻辑 echo "执行定时任务...\n"; } } -
注册命令
第二步,把刚才写的命令注册到application/console.php文件里。如果项目里没有这个文件,自己建一个就行,内容参考下面:return [ 'commands' => [ 'mytask' => \app\command\MyTask::class, ], ]; -
设置定时任务(crontab)
接下来轮到 Linux 的crontab登场了。打开终端,输入crontab -e编辑任务表:crontab -e然后在编辑器中添加一行,定义任务的执行时间和命令。比如想每分钟执行一次
mytask,就这样写:* * * * * cd /path/to/your/project && php think mytask记得把
/path/to/your/project换成你的项目实际路径。 -
保存并退出
保存 crontab 文件,退出编辑器。crontab 会自动加载新配置,不用额外操作。 -
验证定时任务
最后,用crontab -l检查一下任务是否添加成功:crontab -l也可以手动跑一遍命令,测试脚本是否按预期工作:
php think mytask
这样一来,CentOS 上的 ThinkPHP 定时任务就搞定了。当然,上线之后别忘了定期检查,确保它们都在按预期跑,毕竟生产环境里“定时任务没执行”是最容易忽略的坑之一。