yii框架通过控制台命令创建定时任务示例_php实例

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

一,两个入口文件方法:
项目目录结构(图):

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

金沙官网线上 1

复制代码 代码如下:

前后台引导文件分别如下:

$yii = '/home/apps/framework/yii.php';

 代码如下

require_once;

// index.php:
require('path/to/yii.php');
Yii::app()->createWebApplication('protected/config/main.php')->run();

$configFile = dirname.'/../config/console.php';

// admin.php:
require('path/to/yii.php');
Yii::app()->createWebApplication('protected/admin/config/main.php')->run();

Yii::createConsoleApplication;

这样配置比较麻烦一些,我们可以采用覆盖的方法,参考了一个贴子的方法,我又做了一些修改.
protected/admin/config/main.php的代码如下:

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

金沙官网线上, 代码如下

复制代码 代码如下:dirname.DIRECTORY_SEPARATOR.'..',

<?php
$backend=dirname(dirname(__FILE__));
$frontend=dirname($backend);
Yii::setPathOfAlias('backend', $backend);

'name'=>'Emergency',

$frontendArray=require($frontend.'/config/main.php');

'import'=>array( 'application.models.*', 'application.components.*', 'application.extensions.*', ),

$backendArray=array(
'name'=>'网站后台管理系统',
'basePath' => $frontend,
'controllerPath' => $backend.'/controllers',
'viewPath' => $backend.'/views',
'runtimePath' => $backend.'/runtime',

'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;

// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
'application.extensions.*',
'application.extensions.nestedset.*',
'backend.models.*',
'backend.components.*', //这里的先后顺序一定要搞清
),
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
),
),

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

// main is the default layout
//'layout'=>'main',
// alternate layoutPath
'layoutPath'=>dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'layouts'.DIRECTORY_SEPARATOR,
);
if(!function_exists('w3_array_union_recursive'))
{
/**
* This function does similar work to $array1+$array2,
* except that this union is applied recursively.
* @param array $array1 - more important array
* @param array $array2 - values of this array get overwritten
* @return array
*/
function w3_array_union_recursive($array1,$array2)
{
$retval=$array1+$array2;
foreach($array1 as $key=>$value)
{
if(is_array($array1[$key]) && is_array($array2[$key]))
$retval[$key]=w3_array_union_recursive($array1[$key],$array2[$key]);
}
return $retval;
}
}

复制代码 代码如下:

return w3_array_union_recursive($backendArray,$frontendArray);

本文由金沙官网线上发布于编程,转载请注明出处:yii框架通过控制台命令创建定时任务示例_php实例

您可能还会对下面的文章感兴趣: