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 学习的更多相关文章

  1. C++/CLI学习入门

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxIAAAFlCAYAAAB/fN6bAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjw

  2. Commons CLI 学习(1)

    The Apache Commons CLI library provides an API for parsing command line options passed to programs. ...

  3. vue 自学笔记记录

    vue 自学笔记(一): 知识内容:  安装vue ,创建vue实例,安装第一个组件,单项数据流 https://www.cnblogs.com/baili-luoyun/p/10763163.htm ...

  4. 通过python-libvirt管理KVM虚拟机 代码实现

    初步代码 <span style="font-size:18px;">''''' Work with virtual machines managed by libvi ...

  5. 自动化运维与Saltstack

    一.自动化运维介绍 1.自动化运维产生背景   传统的IT运维是将数据中心中的网络设备.服务器.数据库.中间件.存储.虚拟化.硬件等资源进行统一监控,当资源出现告警时,运维人员通过工具或者基于经验进行 ...

  6. saltstack操作

    使用分组 修改minon的ID,做一个标识 [root@node2 ~]# vim /etc/salt/minionmaster: 172.25.254.130 id: web1 #node2[roo ...

  7. HTML5打造原生应用——Ionic框架简介与Ionic Hello World

    试了试用Ionic框架打造了两个应用,然后在Google Play上架了. 程序语言答人 教你设计物联网 更有意思的是这是在一周的业余时间内完成的三个应用中的两个,接着让我们看看这个框架如何实现高效地 ...

  8. jboss CLI 命令行接口学习(适用JBOSS EAP 6.2+)

    一.确认CLI所使用的端口 以domain模式为例,查看domain controller(也就是master主机)上的host.xml <management-interfaces> & ...

  9. VC++ 学习笔记(三):摩登之路——C++/CLI简介

    在Windows上,除非我们必须得用C++来写界面,否则我会选择避免,避免学习和使用MFC.替代的方案是用C#来做界面,然后用C++/CLI来连接C#和Native C++.那么问题来了,C++/CL ...

随机推荐

  1. Java实验报告(一)

    1.水仙花数 public class test1{ public static void main(String[] args){ for(int num=100;num<1000;num++ ...

  2. Delphi XE2_XE3 Update

    Delphi 和 C++Builder XE2 更新摘要 XE2的关键特性如下: 1. FireMonkey Application Platform支持运行在Windows (32和64位),Mac ...

  3. TScreen研究(有待研究)

    先扔在这里,待研究: http://blog.csdn.net/lailai186/article/details/8141170 procedure TForm1.Button1Click(Send ...

  4. media查询(来源于bootstrap)

    /* 大屏幕 */@media (min-width: 1200px) { ... } /* 平板电脑和小屏电脑之间的分辨率 */@media (min-width: 768px) and (max- ...

  5. nginx动静分离与网关

    当我们请求一个网页的时候,可能会加载很多css,js,img等静态文件:一般这些文件是很久都不会变化的,所以我们为了提高页面响应速度,完全可以将这些文件缓存到浏览器中(可以理解为cookie信息),这 ...

  6. time和datetime的区别

    time在 Python 文档里,time是归类在Generic Operating System Services中,换句话说, 它提供的功能是更加接近于操作系统层面的.通读文档可知,time 模块 ...

  7. switch语句能否作用在byte,long,string上

    switch是java中的多分支结构.在switch(expr)中,expr只能是一个整数表达式,或者是枚举常量,整数表达式可以是int基本类型也可以是Integer包装类型,由于byte,short ...

  8. jQuery中$()可以有两个参数

    jQuery(expression, [context]) 返回值:jQuery 概述 这个函数接收一个包含 CSS 选择器的字符串,然后用这个字符串去匹配一组元素. jQuery 的核心功能都是通过 ...

  9. es5继承和es6类和继承

    es6新增关键字class,代表类,其实相当于代替了es5的构造函数 通过构造函数可以创建一个对象实例,那么通过class也可以创建一个对象实列 /* es5 创建一个person 构造函数 */ f ...

  10. vue创建项目配置脚手架vue-cli环境出错

    1.at process._tickCallback (internal/process/next_tick.js:188:7)  npm ERR! message: 'request to http ...