| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | <?php/** * 远程调度器 Task_Runner_Remote *  * - 通过远程请求接口实现任务调度 *  * @author dogstar <chanzonghuang@gmail.com> 20150516 */class Task_Runner_Remote extends Task_Runner {	/**	 * @var Task_Runner_Remote_Connector 远程接口连接器实例	 */    protected $contector;    /**     * @var int $timeoutMS 接口超时(单位:毫秒)     */    protected $timeoutMS;    /**     * @var int 默认最大接口超时     */    const MAX_TIMEOUT_MS = 3000;    public function __construct(Task_MQ $mq, $step = 10, Task_Runner_Remote_Connector $contector = NULL) {        $config = DI()->config->get('app.Task.runner.remote');        if ($contector === NULL) {            if (empty($config['host'])) {                throw new PhalApi_Exception_InternalServerError(T('task miss api host for'));            }            $contector = new Task_Runner_Remote_Connector_Http($config);        }        $this->contector = $contector;        $this->timeoutMS = isset($config['timeoutMS']) ? intval($config['timeoutMS']) : self::MAX_TIMEOUT_MS;        parent::__construct($mq, $step);    }    protected function youGo($service, $params) {        $rs = $this->contector->request($service, $params, $this->timeoutMS);        if ($this->contector->getRet() == 404) {            throw PhalApi_Exception_InternalServerError('task request api time out',                array('url' => $this->contector->getUrl()));        }        $isOk = $this->contector->getRet() == 200 ? TRUE : FALSE;        if (!$isOk) {            DI()->logger->debug('task remote request not ok',                 array('url' => $this->contector->getUrl(), 'ret' => $this->contector->getRet(), 'msg' => $this->contector->getMsg()));        }        return $isOk;    }}
 |