<?php
|
/**
|
* 远程接口连接器 Task_Runner_Remote_Connector
|
*
|
* @author dogstar <chanzonghuang@gmail.com> 20150516
|
*/
|
|
abstract class Task_Runner_Remote_Connector {
|
|
protected $host;
|
|
protected $params = array();
|
|
protected $moreParams = array();
|
|
protected $url;
|
protected $ret;
|
protected $msg;
|
protected $data = array();
|
|
public function __construct($config) {
|
$this->host = $config['host'];
|
$this->moreParams = isset($config['params']) ? $config['params'] : array();
|
}
|
|
/**
|
* 接口请求,超时时ret为404
|
* @param string $service MQ中的接口服务名称,如:Default.Index
|
* @param array $params 参数
|
* @param int $timeoutMS 接口超时(单位:毫秒)
|
* @return array
|
*/
|
public function request($service, $params = array(), $timeoutMs = 3000) {
|
$this->url = $this->host . '?service=' . $service;
|
$params = array_merge($this->moreParams, $params);
|
|
$apiRs = $this->doRequest($this->url, $params, $timeoutMs);
|
|
if ($apiRs === FALSE) {
|
$this->ret = 404;
|
$this->msg = T('time out');
|
|
DI()->logger->debug('task request api time out', array('url' => $this->url));
|
|
return $this->getData();
|
}
|
|
$rs = json_decode($apiRs, true);
|
|
if (empty($rs) || !isset($rs['ret'])) {
|
$this->ret = 500;
|
$this->msg = T('nothing return or illegal json: {rs}', array('rs' => $apiRs));
|
return $this->getData();
|
}
|
|
$this->ret = $rs['ret'];
|
$this->data = $rs['data'];
|
$this->msg = $rs['msg'];
|
|
return $this->getData();
|
}
|
|
public function getRet() {
|
return $this->ret;
|
}
|
|
public function getData() {
|
return $this->data;
|
}
|
|
public function getMsg() {
|
return $this->msg;
|
}
|
|
public function getUrl() {
|
return $this->url;
|
}
|
|
abstract protected function doRequest($url, $data, $timeoutMs);
|
}
|