thinkphp6创建并设置执行定时任务的方法
发表于:2022-03-11 08:36:36浏览:5190次
我们在日常的项目中开发中,总是会遇到需要将某个任务方法定时执行的需求,接下来就为大家讲述基于ThinkPHP6框架的定时执行任务的三个方案,具体的方法会在下面进行详细的描述。
方案一
使用think-cron类库
//composer 安装
composer require yunwuxin/think-cron
github文档地址: https://github.com/yunwuxin/think-cron
1.创建任务类
<?php
namespace app\task;
use yunwuxin\cron\Task;
class DemoTask extends Task
{
public function configure()
{
$this->daily(); //设置任务的周期,每天执行一次,更多的方法可以查看源代码,都有注释
}
/**
* 执行任务
* @return mixed
*/
protected function execute()
{
//...具体的任务执行
}
}
2.配置文件 application/extra/cron.php
return [
'tasks' => [
\app\task\DemoTask::class, //任务的完整类名
]
];
3.开启任务监听
方法一 (推荐)
起一个常驻进程,可以配合supervisor使用
php think cron:schedule
方法二
在系统的计划任务里添加
php /path/to/think cron:run >> /dev/null 2>&1
方案二
自己手写方法。
1.在app下创建command文件夹,写一个timedTask.php文件,如下图:
<?php
namespace app\command;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\Db;
use think\Log;
class timedTask extends Command
{
protected function configure(){
$this->setName('SendMessage')->setDescription("计划任务 SendMessage");
}
//调用SendMessage 这个类时,会自动运行execute方法
protected function execute(Input $input, Output $output){
$output->writeln('Date Crontab job start...');
/*** 这里写计划任务列表集 START ***/
$this->test();
/*** 这里写计划任务列表集 END ***/
$output->writeln('Date Crontab job end...');
}
//获取当天生日的员工 发短信
public function test()
{
Db::name('log')->insert([
'content' => '定时发起',
'add_time' => time(),
'uid' => 1,
'code' => '1000',
'title' => '定时任务'
]);
//echo '这里写你要实现的逻辑代码';
}
}
?>
2.在app/command.php里面加上
return ['app\command\timedTask'];
3.运行SendMessage命令,查看代码是否可运行
进入服务器,进入项目目录,执行命令:
php think SendMessage
设置crontab计划任务
服务器无宝塔,注:
crontab -l //计划任务列表
crontab -e //编辑新增
crontab -r //删除
执行crontab -e,添加下面的定时任务,每隔1分钟执行一次后面的命令
php 项目路径/think 设置的命令关键字
方案三
服务器安装宝塔面板,直接添加计划任务就可以了。
推荐文章
- 12个适合开发后台管理系统的前端框架,建议收藏
- 开源OA办公系统 — 勾股OA 4.96.16发布,企业办公的卓越选择
- 82个常规的前端JavaScript方法封装(41~50)
- 勾股系列系统:项目任务协作管理系统 —— 勾股 DEV 3.8.31 发布
- 微信淘宝实现互通?有关部门开始要求即时通信软件解除屏蔽网址链接,公平竞争
- 利用微软的Office Online实现Office文档在线预览功能
- 推荐收藏7个开源且实用的CSS 框架 / 组件
- Markdown编辑器Editor.md,实现粘贴图片上传,拖拽文件上传
- PHP实现计算剩余几天几时几分倒计时间的方法
- 微软推出 VS Code for the Web 无需在 PC 上进行安装 打开浏览器就可以开始工作