php Yii2框架创建定时任务方法详解

 更新时间:2022年09月02日 14:34:05   作者:PeakXin  
Yii2是一个基于组件、用于开发大型Web应用的高性能PHP框架,采用严格的OOP编写,并有着完善的库引用以及全面的教程,该框架提供了Web 2.0应用开发所需要的几乎一切功能,是最有效率的PHP框架之一

在我们项目开发中,需要使用定时任务来完成批处理业务,下面通过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 这么写就行哈,可自行查找

保存退出即可。

到此这篇关于php Yii2框架创建定时任务方法详解的文章就介绍到这了,更多相关php Yii2框架内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用PHP内置SERVER开启web服务(本地开发使用)

    利用PHP内置SERVER开启web服务(本地开发使用)

    PHP 5.4.0起, CLI SAPI 提供了一个内置的Web服务器,这个内置的Web服务器主要用于本地开发使用,不可用于线上产品环境,URI请求会被发送到PHP所在的的工作目录Working Directory进行处理,除非你使用了-t参数来自定义不同的目录
    2020-01-01
  • php关联数组快速排序的方法

    php关联数组快速排序的方法

    这篇文章主要介绍了php关联数组快速排序的方法,涉及php数组排序的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • PHP操作Mongodb封装类完整实例

    PHP操作Mongodb封装类完整实例

    这篇文章主要介绍了PHP操作Mongodb封装类,结合完整实例形式分析了php封装的针对MongoDB数据库常见的基本配置、连接、增删改查、集合等操作定义与使用方法,需要的朋友可以参考下
    2018-06-06
  • phpmailer在服务器上不能正常发送邮件的解决办法

    phpmailer在服务器上不能正常发送邮件的解决办法

    这篇文章主要介绍了phpmailer在服务器上不能正常发送邮件的解决办法,本文的原因是服务器的安全设置造成,服务器中屏蔽fsockopen函数的使用权限,所以导致发送失败,需要的朋友可以参考下
    2014-07-07
  • php通过Chianz.com获取IP地址与地区的方法

    php通过Chianz.com获取IP地址与地区的方法

    这篇文章主要介绍了php通过Chianz.com获取IP地址与地区的方法,是解析IP地址与地区非常实用的技巧,需要的朋友可以参考下
    2015-01-01
  • php class中public,private,protected的区别以及实例分析

    php class中public,private,protected的区别以及实例分析

    本篇文章是对php class中public,private,protected的区别以及实例进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP下ajax跨域的解决方案之window.name实例分析

    PHP下ajax跨域的解决方案之window.name实例分析

    这篇文章主要介绍了PHP下ajax跨域的解决方案之window.name,结合实例形式分析PHP ajax跨域的解决方案window.name基本原理、操作技巧与相关注意事项,需要的朋友可以参考下
    2020-03-03
  • PHP实现的文件上传类与用法详解

    PHP实现的文件上传类与用法详解

    这篇文章主要介绍了PHP实现的文件上传类与用法,结合实例形式较为详细的分析了PHP文件上传类的定义与具体使用方法,需要的朋友可以参考下
    2017-07-07
  • 封装一个PHP可控限速下载文件的方法

    封装一个PHP可控限速下载文件的方法

    这篇文章给大家介绍了封装一个PHP可控限速下载文件的方法,文章通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-10-10
  • 深入extjs与php参数交互的详解

    深入extjs与php参数交互的详解

    本篇文章是对extjs与php的参数交互进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论