Kohana Minion cli 学习
1、E:\html\tproject\framebota\platform\bootstrap.php
Kohana::modules(array(
'auth' => MODPATH.'auth', // Basic authentication
'cache' => MODPATH.'cache', // Caching with multiple backends
'codebench' => MODPATH.'codebench', // Benchmarking tool
'database' => MODPATH.'database', // Database access
'image' => MODPATH.'image', // Image manipulation
'minion' => MODPATH.'minion', // CLI Tasks
'orm' => MODPATH.'orm', // Object Relationship Mapping
'unittest' => MODPATH.'unittest', // Unit testing
'userguide' => MODPATH.'userguide', // User guide and API documentation 'captcha' => MODPATH.'captcha', // captcha
'export' => MODPATH.'export', // export pdf excel etc
'common' => MODPATH.'common', // mixture common unit //bota all service: it is lazy load
'bapi' => SVCPATH.'bapi', // bota userguide
'member' => SVCPATH.'member', // member center
'corper' => SVCPATH.'corper', // corper center
'order' => SVCPATH.'order', // order center 'line' => SVCPATH.'line', // travel line
'hotel' => SVCPATH.'hotel', // ours and ota hotel
'car' => SVCPATH.'car', // use car service
'visa' => SVCPATH.'visa', // visa
'piao' => SVCPATH.'piao', // on day ticket
'tuan' => SVCPATH.'tuan', // sell
'flight' => SVCPATH.'flight', // flight to supplier
'train' => SVCPATH.'train2', // train to supplier
));
2、E:\html\tproject\framebota\platform\classes\Task\Flight\Airport.php
<?php defined('SYSPATH') or die('No direct script access.'); /**
* 更新机场名称信息
* 数据来源携程 http://sec-m.ctrip.com/restapi/soa2/13076/getpoicontent
* Class Task_Flight_Airport
*/
class Task_Flight_Airport extends Minion_Task
{
protected
$_options
=
array
(
'foo'
=>
'bar'
,
'bar'
=> NULL,
);
/**
* @param array $params
*/
protected function _execute(array $params)
{
Kohana::$log->add(Log::DEBUG, __FILE__."\t".__LINE__."\t\t\t" . var_export($params, true));
$url = 'http://sec-m.ctrip.com/restapi/soa2/13076/getpoicontent';
$rows = ORM::factory('Flight_Airport')
->where('countycode', '=', 'CN')
->where_open()
->or_where('modtime', '<', DB::expr('DATE_SUB(NOW(),INTERVAL 2 DAY)'))
->or_where('modtime', '=', NULL)
->where_close()
->limit(20)
->order_by('modtime', 'ASC')
->order_by('hot', 'ASC')
->find_all();
$curl = CURL::factory($url);
foreach ($rows as $row) {
$code = $row->code;
$result = $curl
->data(array('key' => $code))
->method('post')
->execute();
$result = json_decode($result);
$result = json_decode($result->content);
$result = $result->Data;
$names = array();
$result = array_filter($result, function ($v) use ($code) {
return isset($v->Country) and $v->Country == '中国' and
isset($v->CountryCode) and $v->CountryCode == 'CN' and
isset($v->Code) and $v->Code == $code;
});
foreach ($result as $k => $v) {
if (strstr($v->Name, '机场')) {
$names[$k] = 0;
} else {
$names[$k] = 1;
}
};
array_multisort($names, SORT_NUMERIC, SORT_ASC, $result);
if ($result) {
$result = current($result);
if (isset($result->Datas) and count($result->Datas) and !strstr($result->Name, '机场')) {
$result->Datas = array_filter($result->Datas, function ($v) use ($code) {
return $v->Code == $code;
});
if ($result->Datas) {
$result = (object)array_merge((array)$result, (array)current(Arr::path((array)$result, 'Datas')));
}
}
$row->set('name', strtoupper($result->EName))
->set('_name', $result->Name)
->set('_shortname', UTF8::strlen($result->Name) > 4 ? str_replace('国际', '', $result->Name) : $result->Name);
}
$row->set('modtime', DB::expr('NOW()'))
->save();
}
if ($rows->count() == 0) {
echo '没有变更';
} else {
echo '完成';
}
}
}
3、执行:
# php index.php --task=user:userList --foo=foobar --bar=liuchao # php index.php --task=User_UserList --foo=foobar --bar=liuchao
Kohana Minion cli 学习的更多相关文章
- C++/CLI学习入门
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxIAAAFlCAYAAAB/fN6bAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjw
- Commons CLI 学习(1)
The Apache Commons CLI library provides an API for parsing command line options passed to programs. ...
- vue 自学笔记记录
vue 自学笔记(一): 知识内容: 安装vue ,创建vue实例,安装第一个组件,单项数据流 https://www.cnblogs.com/baili-luoyun/p/10763163.htm ...
- 通过python-libvirt管理KVM虚拟机 代码实现
初步代码 <span style="font-size:18px;">''''' Work with virtual machines managed by libvi ...
- 自动化运维与Saltstack
一.自动化运维介绍 1.自动化运维产生背景 传统的IT运维是将数据中心中的网络设备.服务器.数据库.中间件.存储.虚拟化.硬件等资源进行统一监控,当资源出现告警时,运维人员通过工具或者基于经验进行 ...
- saltstack操作
使用分组 修改minon的ID,做一个标识 [root@node2 ~]# vim /etc/salt/minionmaster: 172.25.254.130 id: web1 #node2[roo ...
- HTML5打造原生应用——Ionic框架简介与Ionic Hello World
试了试用Ionic框架打造了两个应用,然后在Google Play上架了. 程序语言答人 教你设计物联网 更有意思的是这是在一周的业余时间内完成的三个应用中的两个,接着让我们看看这个框架如何实现高效地 ...
- jboss CLI 命令行接口学习(适用JBOSS EAP 6.2+)
一.确认CLI所使用的端口 以domain模式为例,查看domain controller(也就是master主机)上的host.xml <management-interfaces> & ...
- VC++ 学习笔记(三):摩登之路——C++/CLI简介
在Windows上,除非我们必须得用C++来写界面,否则我会选择避免,避免学习和使用MFC.替代的方案是用C#来做界面,然后用C++/CLI来连接C#和Native C++.那么问题来了,C++/CL ...
随机推荐
- Linux 自学shell
1.多个命令用";"分号分割 还可以使用alias 给命令取别名 alias foo='cd /usr ; ls; cd -'2.使用管道线"|" 一个命令的标 ...
- [JS] 鼠标点击文本框清空默认值,离开文本框恢复默认值
在使用文本框的时候,若设定了初始值,选择文本框进行输入的时候要将本来的内容进行删除,会显得非常麻烦 可以在文本框属性定义触发onfocus和onblur两个事件时对应的js功能 下面以asp.net代 ...
- python学习之路 目录
python Python基础-1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python基础-2 编码转换 pycharm 配 ...
- 二、Zabbix-zabbix server部署-LNMP
部署Zabbix server主要分为两部分(软件基本都是yum安装,不要问我为什么不用源码,因为没有必须用源码的需求) 一.部署LNMP/LAMP环境,已提供zabbix的界面展示,已经zabbix ...
- 【Linux 架构】Linux内核架构
(1)System Call Interface(SCI)------系统调用接口(2)Process Management(PM)-------进程管理模块(3)Memory Management( ...
- poj-1236.network of schools(强连通分量 + 图的入度出度)
Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 27121 Accepted: 10 ...
- SSIS包定时执行
企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项中输入作业名称 --"步骤"项 --新建 --"步骤名& ...
- uboot环境变量
一. uboot运行时环境变量分布 1.1. 环境变量有2份,一份在Flash中,另一份在DDR中.uboot开机时一次性从Flash中读取全部环境变量到DDR中作为环境变量的初始化值,然后使用过程中 ...
- Self-Driving Database
最近一直在做 ML in Database 相关的工作.偶然发现CMU 19spring的15-721课程竟然专门安排了这个专题,不禁欣喜若狂,赶紧去学习了一下. Andy提出了self-drivin ...
- django编辑框实现
一些常用的: CKEditor UEEditor TinyEditor KindEditor 下载: http://kindeditor.net/down.php 使用方法: <textarea ...