yii2框架-console的cli模式(二十)
2016-07-25 14:23
417 查看
又有两周的时间没有写blog了,没办法最近实在是太忙了,公司的项目一直在赶,而且还要使用nodejs去实现功能,所以整个团队的又得乖乖认真的学习nodejs。
互联网技术每天都在日新月异的快速发展,我们作为一名设计与开发人员,每天都要关注整个移动互联网的发展趋势,掌握实时动态。
好吧,回归正题,yii2作为一个高性能的web开发框架,在处理后台任务方面有什么优势?是否可以实现cli的模式实现框架本身的后台任务?
答案是可以的!
在yii2的框架中,有一个console(控制台模块)类,可以实现很多的yii2中的命令行功能。
大家可以http://www.yiichina.com/doc/guide/2.0/tutorial-console看看具体内容
下面介绍的主要是yii2的cli的模式执行后台的任务处理。
(1)console的入口文件
在base版本中,有一个yii的文件,这个文件的代码如下:
#!/usr/bin/env php
<?php
/**
* Yii console bootstrap file.
*
* @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/ */
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/config/console.php');
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);其实这是一个php的shell脚本(cli模式脚本),可以看到,入口文件和web应用的入口文件没有多大的区别的。
(2)配置文件
在console文件夹下有一个console.php文件,这个文件就是配置console需要应用到的组件
其中一项
'controllerNamespace' => 'app\commands',
表示console的逻辑业务(Controller)将在@app/commands的这个文件夹下面,默认一个controller
<?php
/**
* @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/ */
namespace app\commands;
use yii\console\Controller;
/**
* This command echoes the first argument that you have entered.
*
* This command is provided as an example for you to learn how to create console commands.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
class HelloController extends Controller
{
/**
* This command echoes what you have entered as the message.
* @param string $message the message to be echoed.
*/
public function actionIndex($message = 'hello world')
{
echo $message . "\n";
}
}在这里我们可以实现很多的控制器的方法操作。
那么在控制台中我们可以直接调用命令执行这个对应的操作
首先进入值basic的文件夹下,然后
yii hello/index
可以直接运行。
这个是在basic的版本上比较容易实现,那么在advanced高级版本如何实现?
在advanced中,分为common公共模块,frontend前台应用,backend后台应用,console控制台应用
(1)console的入口文件
advanced版本中需要一个console的入口文,我们可以在console文件夹下面建立一个yii文件
#!/usr/bin/env php
<?php
/**
* Yii console bootstrap file.
*
* @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/ */
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
// 一定要包含这个文件进来,完成设置的@console的别名
require(__DIR__ . '/../common/config/bootstrap.php');
$config = require(__DIR__ . '/config/main.php');
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);注意这个require(__DIR__ . '/../common/config/bootstrap.php');
因为boostrap文件里面是设置各个模块应用的别名的。所以在进入这个模块或者应用时,必须要设置设置对应模块的别名,否则没法识别,无法加载文件。
(2)配置文件
在console文件夹下有一个config文件夹,可以配置里面的各个文件,现在主要说一下的是main.php的主配置文件,其中一项
'controllerNamespace' => 'console\controllers',
这个要配置好,在控制器中可以使用该配置的命名空间,那么可以在console/controllers下建立controller
在终端控制台进入console的文件夹下,执行yii test/index
可以打印hello word。
通过上面的basic版本和advanced版本的,可以利用定时任务来做一些后台的业务处理。
友情推荐
本人已开源基于swoole扩展实现的轻量级框架https://github.com/bingcool/swoolefy
互联网技术每天都在日新月异的快速发展,我们作为一名设计与开发人员,每天都要关注整个移动互联网的发展趋势,掌握实时动态。
好吧,回归正题,yii2作为一个高性能的web开发框架,在处理后台任务方面有什么优势?是否可以实现cli的模式实现框架本身的后台任务?
答案是可以的!
在yii2的框架中,有一个console(控制台模块)类,可以实现很多的yii2中的命令行功能。
大家可以http://www.yiichina.com/doc/guide/2.0/tutorial-console看看具体内容
下面介绍的主要是yii2的cli的模式执行后台的任务处理。
(1)console的入口文件
在base版本中,有一个yii的文件,这个文件的代码如下:
#!/usr/bin/env php
<?php
/**
* Yii console bootstrap file.
*
* @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/ */
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/config/console.php');
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);其实这是一个php的shell脚本(cli模式脚本),可以看到,入口文件和web应用的入口文件没有多大的区别的。
(2)配置文件
在console文件夹下有一个console.php文件,这个文件就是配置console需要应用到的组件
其中一项
'controllerNamespace' => 'app\commands',
表示console的逻辑业务(Controller)将在@app/commands的这个文件夹下面,默认一个controller
<?php
/**
* @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/ */
namespace app\commands;
use yii\console\Controller;
/**
* This command echoes the first argument that you have entered.
*
* This command is provided as an example for you to learn how to create console commands.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
class HelloController extends Controller
{
/**
* This command echoes what you have entered as the message.
* @param string $message the message to be echoed.
*/
public function actionIndex($message = 'hello world')
{
echo $message . "\n";
}
}在这里我们可以实现很多的控制器的方法操作。
那么在控制台中我们可以直接调用命令执行这个对应的操作
首先进入值basic的文件夹下,然后
yii hello/index
可以直接运行。
这个是在basic的版本上比较容易实现,那么在advanced高级版本如何实现?
在advanced中,分为common公共模块,frontend前台应用,backend后台应用,console控制台应用
(1)console的入口文件
advanced版本中需要一个console的入口文,我们可以在console文件夹下面建立一个yii文件
#!/usr/bin/env php
<?php
/**
* Yii console bootstrap file.
*
* @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/ */
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
// 一定要包含这个文件进来,完成设置的@console的别名
require(__DIR__ . '/../common/config/bootstrap.php');
$config = require(__DIR__ . '/config/main.php');
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);注意这个require(__DIR__ . '/../common/config/bootstrap.php');
因为boostrap文件里面是设置各个模块应用的别名的。所以在进入这个模块或者应用时,必须要设置设置对应模块的别名,否则没法识别,无法加载文件。
(2)配置文件
在console文件夹下有一个config文件夹,可以配置里面的各个文件,现在主要说一下的是main.php的主配置文件,其中一项
'controllerNamespace' => 'console\controllers',
这个要配置好,在控制器中可以使用该配置的命名空间,那么可以在console/controllers下建立controller
<?php /** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */ namespace console\controllers; use yii\console\Controller; /** * This command echoes the first argument that you have entered. * * This command is provided as an example for you to learn how to create console commands. * * @author Qiang Xue <qiang.xue@gmail.com> * @since 2.0 */ class TestController extends Controller { /** * This command echoes what you have entered as the message. * @param string $message the message to be echoed. */ public function actionIndex($message = 'hello world') { echo $message . "\n"; } public function actionCreate() { echo 'advanced'; } }具体的业务就可以在这里实现
在终端控制台进入console的文件夹下,执行yii test/index
可以打印hello word。
通过上面的basic版本和advanced版本的,可以利用定时任务来做一些后台的业务处理。
友情推荐
本人已开源基于swoole扩展实现的轻量级框架https://github.com/bingcool/swoolefy
相关文章推荐
- yii2中使用Active Record模式的方法
- C# Console利用mspaint打开图像并保存的方法
- 使用nodejs开发cli项目实例
- 使用console进行性能测试
- yii2超好用的日期组件和时间组件
- php-cli简介(不会Shell语言一样用Shell)
- Yii2简单实现多语言配置的方法
- Yii2使用dropdownlist实现地区三级联动功能的方法
- yii2使用ajax返回json的实现方法
- 浅析Yii2中GridView常见操作
- 浅析Yii2集成富文本编辑器redactor实例教程
- Yii2前后台分离及migrate使用(七)
- Yii2框架dropDownList下拉菜单用法实例分析
- 通过PHP CLI实现简单的数据库实时监控调度
- php cli模式学习(PHP命令行模式)
- PHP CLI模式下的多进程应用分析
- Yii2 RESTful中api的使用及开发实例详解
- php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
- node.js中的console用法总结
- Yii2创建控制器(createController)方法详解