yii2框架-console的cli模式(二十)
又有两周的时间没有写blog了,没办法最近实在是太忙了,公司的项目一直在赶,而且还要使用nodejs去实现功能,所以整个团队的又得乖乖认真的学习nodejs。
互联网技术每天都在日新月异的快速发展,我们作为一名设计与开发人员,每天都要关注整个移动互联网的发展趋势,掌握实时动态。
好吧,回归正题,yii2作为一个高性能的web开发框架,在处理后台任务方面有什么优势?是否可以实现cli的模式实现框架本身的后台任务?
答案是可以的!
在yii2的框架中,有一个console(控制台模块)类,可以实现很多的yii2中的命令行功能。
大家可以http://www.yiichina.com/doc/guide/2.0/tutorial-console看看具体内容
下面介绍的主要是yii2的cli的模式执行后台的任务处理。
(1)console的入口文件
(2)配置文件
在console文件夹下有一个console.php文件,这个文件就是配置console需要应用到的组件
其中一项
"controllerNamespace" => "appcommands",
表示console的逻辑业务(Controller)将在@app/commands的这个文件夹下面,默认一个controller
那么在控制台中我们可以直接调用命令执行这个对应的操作
首先进入值basic的文件夹下,然后
yii hello/index
可以直接运行。
这个是在basic的版本上比较容易实现,那么在advanced高级版本如何实现?
在advanced中,分为common公共模块,frontend前台应用,backend后台应用,console控制台应用
(1)console的入口文件
advanced版本中需要一个console的入口文,我们可以在console文件夹下面建立一个yii文件
因为boostrap文件里面是设置各个模块应用的别名的。所以在进入这个模块或者应用时,必须要设置设置对应模块的别名,否则没法识别,无法加载文件。
(2)配置文件
在console文件夹下有一个config文件夹,可以配置里面的各个文件,现在主要说一下的是main.php的主配置文件,其中一项
"controllerNamespace" => "consolecontrollers",
这个要配置好,在控制器中可以使用该配置的命名空间,那么可以在console/controllers下建立controller
在终端控制台进入console的文件夹下,执行yii test/index
可以打印hello word。
互联网技术每天都在日新月异的快速发展,我们作为一名设计与开发人员,每天都要关注整个移动互联网的发展趋势,掌握实时动态。
好吧,回归正题,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 yiiconsoleApplication($config); $exitCode = $application->run(); exit($exitCode);其实这是一个php的shell脚本(cli模式脚本),可以看到,入口文件和web应用的入口文件没有多大的区别的。
(2)配置文件
在console文件夹下有一个console.php文件,这个文件就是配置console需要应用到的组件
其中一项
"controllerNamespace" => "appcommands",
表示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 appcommands; use yiiconsoleController; /** * 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 . " "; } }在这里我们可以实现很多的控制器的方法操作。
那么在控制台中我们可以直接调用命令执行这个对应的操作
首先进入值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 yiiconsoleApplication($config); $exitCode = $application->run(); exit($exitCode);注意这个require(__DIR__ . "/../common/config/bootstrap.php");
因为boostrap文件里面是设置各个模块应用的别名的。所以在进入这个模块或者应用时,必须要设置设置对应模块的别名,否则没法识别,无法加载文件。
(2)配置文件
在console文件夹下有一个config文件夹,可以配置里面的各个文件,现在主要说一下的是main.php的主配置文件,其中一项
"controllerNamespace" => "consolecontrollers",
这个要配置好,在控制器中可以使用该配置的命名空间,那么可以在console/controllers下建立controller
<?php /** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */ namespace consolecontrollers; use yiiconsoleController; /** * 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 . " "; } public function actionCreate() { echo "advanced"; } }具体的业务就可以在这里实现
在终端控制台进入console的文件夹下,执行yii test/index
可以打印hello word。
通过上面的basic版本和advanced版本的,可以利用定时任务来做一些后台的业务处理。
友情推荐
本人已开源基于swoole扩展实现的轻量级框架
https://github.com/bingcool/swoolefy
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。