• Yii通过控制台命令创建定时任务


    假设Yii项目路径为 /home/apps/

    1. 创建文件 /home/apps/protected/commands/crons.php

    <?php
    
    $yii = '/home/apps/framework/yii.php';
    
    require_once($yii);  
    
    $configFile = dirname(__FILE__).'/../config/console.php';
    
    Yii::createConsoleApplication($configFile)->run(); 

    2. 创建需要的配置文件 /home/apps/protected/config/console.php,配置需要的组件、数据库连接,日志等信息,格式类似主配置文件main.php

    <?php  
    return array( 
        'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 
    
        'name'=>'Emergency',
    
        'import'=>array(  
                'application.models.*',
                'application.components.*', 
                'application.extensions.*',
        ), 
    
        'components'=>array(
            'log'=>array(
                'class'=>'CLogRouter',
                'routes'=>array(
                    array(
                        'class'=>'CFileLogRoute',
                        'levels'=>'info, warning, error',
                    ),
                ),
            ), 
            'db'=>array(
                'class'=>'application.extensions.PHPPDO.CPdoDbConnection',
                'pdoClass' => 'PHPPDO',
                'connectionString' => 'mysql:host=xxxx;dbname=xxx',
                'emulatePrepare' => true,
                'username' => 'xxx',
                'password' => 'xxx',
                'charset' => 'utf8',
                'tablePrefix' => 'tbl_',
            ),
        ),  
            
        'params' => require('params.php'),
    );

    3. 在 /home/apps/protected/commands/ 下新建 TestCommand 类,继承 CConsoleCommand,在TestCommand中,可以使用项目的配置信息和Yii的各种方法

    <?php  
    class TestCommand  extends CConsoleCommand  
    {  
        public function run()
        {  
            ...
        }  
    }

    4. 创建定时任务

    $ crontab -e

    插入

    1 * * * * /home/php/bin/php -f /home/apps/protected/commands/crons.php Test &

    即为每小时的第一分钟执行TestCommand类中的内容,类似的可以在/home/apps/protected/commands/下新建其他类,使用命令行执行。

  • 相关阅读:
    前端技术学习路线及技术汇总
    周末学习笔记——B/S和C/S的介绍
    前端个人笔记----------vue.js
    js中闭包来实现bind函数的一段代码的分析
    零碎总结
    最近要做的事
    递归中的返回
    近期写js库中遇到的一个判别的问题
    js中函数的写法
    关于异步回调的一段代码及相关总结
  • 原文地址:https://www.cnblogs.com/zhaobolu/p/3643652.html
Copyright © 2020-2023  润新知