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. 链路聚合teaming(网卡绑定技术)2

    一.sentos7网卡绑定技术之teaming 这里介绍两种最常见的双网卡绑定模式: (1) roundrobin - 轮询模式 所有链路处于负载均衡状态,这种模式的特点增加了带宽,同时支持容错能力. ...

  2. Ubuntu 16.04 设置静态IP 注意事项

    目录 查看动态ip下的网络信息 查看默认网关 设置静态网络 查看动态ip下的网络信息 1 ifconifg # 查看网卡信息: 可以看出网口名称为 eno1, 以及子网掩码(mask) 查看默认网关 ...

  3. 【Linux开发】全面的framebuffer详解

    全面的framebuffer详解 一.FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口. Linux是工作在保护模式下,所以用户态进程是无法象D ...

  4. 文档压缩 | gzip、bzip2、xz

    6.文档的压缩与打包 Linux下常见后缀名所对应的的压缩工具 .gz 表示由gzip压缩工具压缩的文件 .bz2 表示由bzip2压缩工具压缩的文件 .tar 表示由tar打包程序打包的文件(tar ...

  5. PHP 经典有趣的算法

    原文:https://blog.csdn.net/a519395243/article/details/77942913 1.一群猴子排成一圈,按1,2,…,n依次编号.然后从第1只开始数,数到第m只 ...

  6. 攻防世界--IgniteMe

    测试文件:https://adworld.xctf.org.cn/media/task/attachments/fac4d1290e604fdfacbbe06fd1a5ca39.exe 1.准备 获取 ...

  7. 关于JSON.parse(JSON.stringify(obj))实现深拷贝应该注意的坑

    JSON.parse(JSON.stringify(obj))我们一般用来深拷贝,其过程说白了 就是利用JSON.stringify 将js对象序列化(JSON字符串),再使用JSON.parse来反 ...

  8. tomcat 启动报错 解决办法 A child container failed during&nbsp

    转自:http://blog.sina.com.cn/s/blog_4e1e357d0102v55c.html 控制台报错: Caused by: org.apache.catalina.Lifecy ...

  9. Linux 下编写.sh文件运行JAR下的Class

    #!/bin/sh #bash文件头 APP_HOME=/opt/CrxToMongodb #目录是/opt/CrxToMongodb CLASSPATH=$APP_HOME #bin目录当然是包含j ...

  10. 008-流程控制 case 语句

    流程控制 case 语句 与if...elif...else 语句一样都是多分支条件语句,不过if语句可以判断多种条件关系,case只能判断一种条件关系 [root@zabbix lianxi]# . ...