发布于2026-07-07 阅读(0)
扫一扫,手机访问
在Linux环境下用ThinkPHP做定时任务,其实是个常规操作,但不少人在第一步就卡住了——不是命令写错,就是路径没配对。下面咱们从头捋一遍,保证每一步都讲清楚。

在ThinkPHP项目的根目录下,新建一个command.php文件。别嫌麻烦,所有定时任务的核心逻辑都放这里面。
打开command.php,写一个实际的命令。比如下面这个清理缓存的例子,结构很清晰:定义命令名称,然后在execute方法里执行具体操作。注意命名空间要跟项目保持一致。
setName('clearcache')
->setDescription('Clear cache');
}
protected function execute(Input $input, Output $output)
{
Cache::clear();
$output->writeln("Cache cleared successfully!");
}
}
在application目录下找到(或创建)console.php文件,把刚才定义的命令类注册进去。其实就是把类名加到commands数组里,框架会自动识别。
[
'app\command\ClearCache',
],
];
到了Linux这边,用crontab来调度。运行 crontab -e 打开当前用户的计划任务表,在末尾加一行。比如每分钟执行一次清理缓存:
* * * * * cd /path/to/your/thinkphp/project && php think clearcache
这里/path/to/your/thinkphp/project一定要换成你项目的实际路径,否则系统根本找不到命令。另外注意php think后面的命令名就是你在configure里定义的setName那个名称。
crontab文件保存后,任务就生效了。可以手动跑一下看看效果:php think clearcache,如果能正常输出“Cache cleared successfully!”,那就说明整个链路没问题。
最后提一嘴:确保Linux上的PHP环境已正确配置,ThinkPHP项目路径已经加到系统的PATH变量里,否则php think可能找不到入口文件。当然,如果你直接用绝对路径调用/usr/bin/php /path/to/project/think clearcache也可以绕开环境变量问题。