|
- <?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);
- }
|