调用minion Task使用方法介绍
下载到本地kohana
\modules目录中,如下图:
修改application目录下的bootstrap.php文件开启验证码模块minion
Kohana::modules(array(
'auth' => MODPATH.'auth', // Basic authentication
'database' => MODPATH.'database', // Database access
'minion' => MODPATH.'minion', // CLI Tasks
// 'orm' => MODPATH.'orm', // Object Relationship Mapping
// 'unittest' => MODPATH.'unittest', // Unit testing
// 'userguide' => MODPATH.'userguide', // User guide and API documentation
'pagination' => MODPATH.'pagination', // pagination
));
创建一个Task目录
在\kohana-v\application\classes目录下创建一个Task目录,这里可以放自己需要执行的PHP文件
在Task下创建了一个目录user和Demo.php的例子
打开Demo.php,内容如下:
<?php defined('SYSPATH') or die('No direct script access.');
class Task_Demo extends Minion_Task
{
//构造函数,默认加载
public function __construct() {
parent::__construct();
echo $today_start = date("Y-m-d H:i:s",time());
echo "\n";//换行
}
/**
* This is a demo task
*
* @return null
*/
protected function _execute(array $params)
{
echo $data = $this->overdue_repay();
$str = "";
echo $str;
}
//创建了一个返回当前时间的方法
public function overdue_repay()
{
$today_start = date("Y-m-d H:i:s",time());
return $today_start;
}
}
在命令行执行,就会将内容读取出来,如下图:
执行带目录的task目录文件,
在User目录中创建了UserList.php文件
UserList.php目录内容如下:
<?php
defined('SYSPATH') or die('No direct script access.');
/**
* Created by PhpStorm.
* User: aiya
* Date: 16/6/25
* Time: 下午10:05
*
* 定时读取用户列表
*/
class Task_User_UserList extends Minion_Task {
public function __construct() {
parent::__construct();
}
public function _execute(array $param) {
echo "1234\n";
$rs = DB::select()->from('users')->execute()->as_array();
if(count($rs)){
echo date('Y-m-d H:i:s')." ".__CLASS__."\trows:".count($rs)."\r\n";
foreach($rs as $v){
echo 'User_ID:'.$v['id']."\tUser_Name:".$v['username'];
echo "\r\n";
}
echo date('Y-m-d H:i:s')." ".__CLASS__."\tend \r\n";
}
}
}
写命令脚本
在命令行中切换到对应的网站根目录,执行:php index.php --task=User_UserList
与数据库中的数据一致
我们可以写成shell脚本,加入计划任务,定期在后台执行
#!/bin/bash
#每30秒执行一次
while [ 1 ]
do
php /wamp/www/kohana-v/index.php --task=User_UserList
sleep 30
done