Phalcon下命令行应用(command line applications)

今天打算在phalcon项目下加入一个定时任务,来发送邮件。

看了官网的例子,配置和运行都少许杂乱,还有个bug,见备注, 我这边主要讲解如何将command line 的配置独立出来,如果初上手的同学,建议先运行官网第一个例子,成功后,再实践一下官网第二个例子,出现报错,就看我备注,然后再看我这如何将配置独立处理。

借鉴思想:主要借鉴Yii框架中,类似功能commands的配置console.php。

第一步:在app下的tasks文件夹下建三个文件:

cl_config.php    //直接把app/config/config.php内容copy进去

cl_loader.php   //同样把app/config/loader.php内容copy进去,注意要有所取舍,比如modelsDir,用数据库时用,但controllersDir就没啥用,可以注释掉

cl_services.php //也同样copy进去,但$di不需要重新生成,直接用好了,把没用的都注释掉,一般只保留$di->set(‘db‘.... 那段

第二步:修改app下的cli.php文件

if(is_readable(APPLICATION_PATH . ‘/tasks/cl_config.php‘)) {      //导入cl_config.php
$config = include APPLICATION_PATH . ‘/tasks/cl_config.php‘;
$di->set(‘config‘, $config);
}
include APPLICATION_PATH. "/tasks/cl_loader.php";         //现在引入autoloader,
include APPLICATION_PATH. "/tasks/cl_services.php";      //引入cl_services

ok啦,,,,

备注:

cli.php里的一部分配置

$arguments = array();
foreach($argv as $k => $arg) {
if($k == 1) {
$arguments[‘task‘] = $arg;
} elseif($k == 2) {
$arguments[‘action‘] = $arg;
} elseif($k >= 3) {
$arguments[] = $arg;  //需改成$arguments[‘params‘][] = $arg;否则,在命令行带上参数运行时,会报错,如下
}
}

运行:$ php app/cli.php main test ff ss ww mm

报错内容:

PHP Catchable fatal error:  Argument 1 passed to MainTask::testAction() must be of the type array, string given in /Users/liangzhongyuan/Sites/library/app/tasks/MainTask.php on line 24

Catchable fatal error: Argument 1 passed to MainTask::testAction() must be of the type array, string given in /Users/liangzhongyuan/Sites/library/app/tasks/MainTask.php on line 24

相关连接:

http://www.myleftstudio.com/reference/cli.html //官网讲解

Phalcon下命令行应用(command line applications)

时间: 2024-08-17 15:47:49

Phalcon下命令行应用(command line applications)的相关文章

MAC 命令行工具(Command Line Tools)安装

不过升级后安装命令行工具(Command Line Tools)时发现官网没有clt的下载安装包了,原来改了,使用命令在线安装. 打开终端,输入命令:xcode-select --install 选择“安装”,然后同意安装协议.

scrapy系列教程二——命令行工具(Command line tools)

1.命令行工具(Command line tools) Scrapy是通过Scrapy命令行工具进行控制的.这里我们称之为 “Scrapy tool” 以用来和子命令进行区分. 对于子命令,我们称为 “command” 或者 “Scrapy commands”.Scrapy tool 针对不同的目的提供了多个命令,每个命令支持不同的参数和选项. 2.常用命令 官方命令行说明文档 http://scrapy-chs.readthedocs.org/zh_CN/latest/topics/comma

MAC OS 如何安装命令行工具:Command Line Tools

打开终端输入:xcode-select --install 回车 安装好了测试结果:gcc -v 显示如下: xcode-select: note: install requested for command line developer tools apple-1tekiiMac:~ apple-1$ gcc -v Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-includ

scrapy1.0手册--01--命令行工具(Command line tools)

命令行工具(Command line tools) 0.10 新版功能. Scrapy是通过 scrapy 命令行工具进行控制的. 这里我们称之为 "Scrapy tool" 以用来和子命令进行区分. 对于子命令,我们称为 "command" 或者 "Scrapy commands". Scrapy tool 针对不同的目的提供了多个命令,每个命令支持不同的参数和选项. 默认的Scrapy项目结构 在开始对命令行工具以及子命令的探索前,让我们首先

linux/mac下命令行rm回收站--rmtrash

linux.mac的命令行下没有回收站功能,很多时候手一抖就把重要文件给 rm -fr * 了,虽然linux下有可能通过lost +found/debugfs找回,但难度也比较大,不能保证一定能够找回.人总是会犯错,本人工作这几年也犯过3次rm -fr删除后后悔的错误,与其后悔不如防范于未然,像桌面操作系统(windows.mac os.Ubuntu)一样加个回收站机制就可以了,经过几天的努力终于实现了,放到github上了,欢迎使用. 源码地址:https://github.com/LaiJ

iOS系统提供开发环境下命令行编译工具:xcodebuild

iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单来说,Workspace就是一个容器,在该容器中可以存放多个你创建的Xcode Project, 以及其他的项目中需要使用到的文件. 使用Workspace的好处有: 1),扩展项目的可视域,即可以在多个项目之间跳转,重构,一个项目可以使用另一个项目的输出.Workspace会负责各个Project

ubuntu 下命令行格式化 U盘 (转载)

ubuntu 下命令行格式化 U盘 命令行:原则是先卸载,后格式化. 假如u盘挂载在/media/disk上 卸载: sudo umount /media/disk 格式化: sudo mkfs.vfat /dev/sdb 可以用 sudo fdisk -l查看u盘是不是/dev/sdb. 不同的格式对应不同的格式化命令: mkfs mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.msdos mkfs.vfat mkfs.bfs mkfs.ext2 mkfs.ex

Ubuntu下命令行方式对PDF文件进行缩放、合并、拆分

安装软件: sudo aptitude install ghostscript 然后执行命令: gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -sOutputFile=new_file.pdf original_file.pdf PDFSETTINGS参数说明: /screen - 最低精度方式输出,因为屏幕展示所需的精度很低/ebook - 中等精度输出/printer

linux下命令行连接FTP是遇到的错误(425 Failed to establish connection)

linux下命令行连接FTP是遇到的错误(425 Failed to establish connection) 首先FTP的运行模式有主动模式和被动模式两种 然后笔者在工作中搭建了ftp,但是没有开启他的被动模式. 然后server端的防火墙开放了21端口. 因此客户端能连上server,但是输入命令会提示.(首先要数据passive off命令关闭客户端以被动模式连接server端) 原因是ftp在主动模式下是通过21端口进行登陆的,但是后续是通过20端口与客户端进行数据交换. 因此笔者在这