当前位置: 首页 > news >正文

Yii2 创建定时任务

在我们项目开发中,需要使用定时任务来完成批处理业务,下面通过Yii2框架来实现定时任务

Yii2框架定时任务代码统一放在 ./console 目录下

简单的定时任务脚步文件

首先在console/controller目录下创建一个定时任务控制器TestController.php

<?php

namespace console\controllers;

use yii\console\Controller;

class TestController extends Controller
{

    /**
     * 执行测试脚本
     */
    public function actionDo()
    {
        echo 'hello test console';
    }
}

在控制台运行命令php yii,会看到test控制下的do方法

······
- test
    test/do                        执行测试脚本

执行脚步命令php yii 控制器名/方法名,会输出

php yii test/do
hello test console

这就完成了一个简单的定时任务脚步控制器

传递参数

如果需要传递参数

<?php

namespace console\controllers;

use yii\console\Controller;

class TestController extends Controller
{
    /**
     * @var integer 接收的参数
     */
    public $param1;

    /**
     * @var string 接收的参数
     */
    public $param2;

    /**
     * 设置参数
     * @param string $actionID
     * @return string[]
     */
    public function options($actionID)
    {
        return [
            'param1',
            'param2',
        ];
    }

    /**
     * 执行测试脚本
     */
    public function actionDo()
    {
        echo $this->param1 . PHP_EOL;
        echo $this->param2 . PHP_EOL;
    }
}

其中 param1param2就是参数,执行脚步命令php yii 控制器名/方法名 --参数= ····

php yii test/do --param1=123 --param2=hello
123
hello

设置参数别名

如果需要给参数设置别名

<?php

namespace console\controllers;

use yii\console\Controller;

class TestController extends Controller
{
    /**
     * @var integer 接收的参数
     */
    public $param1;

    /**
     * @var string 接收的参数
     */
    public $param2;

    /**
     * 设置参数
     * @param string $actionID
     * @return string[]
     */
    public function options($actionID)
    {
        return [
            'param1',
            'param2',
        ];
    }

    /**
     * 参数设置别名
     * @return array
     */
    public function optionAliases()
    {
        return [
            'p1' => 'param1',
            'p2' => 'param2'
        ];
    }

    /**
     * 执行测试脚本
     */
    public function actionDo()
    {
        echo $this->param1 . PHP_EOL;
        echo $this->param2 . PHP_EOL;
    }
}

其中 p1p2就是参数的别名,执行脚步命令php yii 控制器名/方法名 --参数= ····

php yii test/do -p1=123 -p2=hello
123
hello

注意:设置参数别名后,使用别名参数用一个横杆(-)链接。

在Linux配置crontab

执行命令crontab -e,我们以每分钟执行一次为例

*/1 * * * * /usr/bin/php /var/www/html/yii2-project/yii test/do >/dev/null 2>&1

其中

  • /usr/bin/php 是php运行文件
  • /var/www/html/yii2-project/yii 项目目录中的yii 文件
  • test/do 是执行脚步命令
  • >/dev/null 2>&1 这么写就行哈,可自行查找

保存退出即可。

相关文章:

  • 【中间件】MQ(作用、组成、复制和刷盘策略、幂等、堆积与延迟、死信队列)面试题
  • 【线性表,队列和栈,栈溢出,链表和顺序表的特点】
  • 获取JVM 进程 PID
  • 实现Callable接口实现线程创建及线程注意事项包括线程状态,一些API
  • 2023年湖北安全员ABC报名条件、报名流程、报名需要什么资料呢?甘建二
  • 液位检测仪在线监测系统解决方案
  • Argo rollouts + istio服务网格实现金丝雀灰度发布
  • 摸鱼三天,我写了一个通用的组建树TreeUtil工具
  • 【Telegraf 介绍】
  • 【React】类excel表格的开源项目handsontable
  • 2022前端面试—js+vue篇(持续更新)
  • MySQL数据库管理(二)
  • 【我的世界Minecraft-MC】常见及各种指令大杂烩【2022.8版】
  • mpls详解
  • Mac电脑配置Java环境和android环境,删除谷歌浏览器的自动更新
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • C++类的相互关联
  • canvas 高仿 Apple Watch 表盘
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • extjs4学习之配置
  • Phpstorm怎样批量删除空行?
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • TypeScript实现数据结构(一)栈,队列,链表
  • 从零搭建Koa2 Server
  • 基于HAProxy的高性能缓存服务器nuster
  • 将回调地狱按在地上摩擦的Promise
  • 如何设计一个微型分布式架构?
  • 入手阿里云新服务器的部署NODE
  • 怎样选择前端框架
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​用户画像从0到100的构建思路
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (12)目标检测_SSD基于pytorch搭建代码
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (day6) 319. 灯泡开关
  • (Git) gitignore基础使用
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (转)详解PHP处理密码的几种方式
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .a文件和.so文件
  • .naturalWidth 和naturalHeight属性,
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .netcore 获取appsettings
  • .NET框架
  • @private @protected @public
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [1525]字符统计2 (哈希)SDUT
  • [20150904]exp slow.txt
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]