在 Ubuntu 中配置 ThinkPHP 的定时任务,你需要遵循以下步骤:
sudo apt-get update
sudo apt-get install php
然后通过 Composer 安装 ThinkPHP:
sudo apt-get install composer
composer create-project topthink/think tp_project
将 tp_project 替换为你的项目目录。
application 目录下创建一个名为 command 的文件夹,然后在 command 文件夹中创建一个新的 PHP 文件,例如 MyTask.php。在这个文件中,定义一个继承自 think\console\Command 的类,并实现 configure() 和 execute() 方法:<?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('My custom task');
}
protected function execute(Input $input, Output $output)
{
// 在这里编写你的定时任务逻辑
$output->writeln("Hello, ThinkPHP!");
}
}
application 目录下创建一个名为 console.php 的文件(如果尚未创建),并在其中注册刚刚创建的定时任务类:<?php
// application/console.php
use think\console\Server;
use app\command\MyTask;
return [
'commands' => [
'mytask' => MyTask::class,
],
];
crontab 的文件(如果尚未创建),并添加以下内容:* * * * * cd /path/to/your/thinkphp_project && php think mytask
将 /path/to/your/thinkphp_project 替换为你的 ThinkPHP 项目的实际路径。
sudo apt-get install supervisor
然后创建一个新的 Supervisor 配置文件:
sudo nano /etc/supervisor/conf.d/thinkphp.conf
将以下内容粘贴到配置文件中,确保将 /path/to/your/thinkphp_project 替换为你的 ThinkPHP 项目的实际路径:
[program:thinkphp]
command=cd /path/to/your/thinkphp_project && php think run
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/thinkphp.err.log
stdout_logfile=/var/log/supervisor/thinkphp.out.log
保存并退出配置文件,然后重新加载 Supervisor 配置:
sudo supervisorctl reread
sudo supervisorctl update
现在,你的 ThinkPHP 定时任务应该已经配置好了。每隔一分钟,Supervisor 将运行一次 mytask 命令,执行你在 MyTask 类中定义的逻辑。你可以根据需要调整 crontab 文件中的时间间隔。