本文基于tp5.1实现:tp5+服务器crontab
一、新建定时任务
- 在application下新建
crontab
文件夹; - 在crontab文件夹下新建
command
文件夹; - 在command文件夹中新建
Task.php
控制器<?php
namespace app\crontab\command;
use app\index\model\User;
use think\console\Command;
use think\console\Input;
use think\console\Output;
class Task extends Command
{
protected function configure()
{
$this->setName('task')->setDescription('定时计划:每天0点通知用户');
}
/**
* 任务实现功能:定时更新通知时间
* @param Input $input
* @param Output $output
* @return int|null|void
* @throws \Exception
*/
protected function execute(Input $input, Output $output)
{
$userData = User::select();
$jobData=[];
foreach ($userData as $v) {
$jobData[] = ['id' => $v['id'],'notify_time' => time()];
}
$model=new User();
$model->saveAll($jobData);
}
}
二、配置任务
application/command.php
中配置return [
'app\crontab\command\Task', //定时通知用户
];
三、linux服务器添加任务脚本
1、crontab -e
//编辑新增
0 0 * * * /usr/bin/php /www/wwwroot/tp5demo.com/think task>>/www/wwwroot/tp5demo.com/runtime/20201127.log 2>&1
该脚本表示每天0点0分执行task任务:
/usr/bin/php 为服务器PHP目录所在;
/www/wwwroot/tp5demo.com/think 表示task任务所在的项目目录;>>/www/wwwroot/tp5demo.com/runtime/20201127.log 2>&1 记录任务执行记录
2、crontab -l
//计划任务列表 可查看部署成功的任务
3、linux crontab 任务一般存放在/var/spool/cronw
文件夹中