public function testResponseWithBadRequest() { $data = array('service' => 'AnotherImpl'); DI()->request = new PhalApi_Request($data); DI()->response = 'PhalApi_Response_Json_Mock'; $phalApi = new PhalApi(); $rs = $phalApi->response(); $rs->output(); $this->expectOutputRegex('/"ret":400/'); }
protected function youGo($service, $params) { $params['service'] = $service; DI()->request = new PhalApi_Request($params); DI()->response = new PhalApi_Response_Json(); $phalapi = new PhalApi(); $rs = $phalapi->response(); $apiRs = $rs->getResult(); if ($apiRs['ret'] != 200) { DI()->logger->debug('task local go fail', array('servcie' => $service, 'params' => $params, 'rs' => $apiRs)); return FALSE; } return TRUE; }
<?php /** * Demo 统一入口 */ require_once dirname(__FILE__) . '/../init.php'; //装载你的接口 DI()->loader->addDirs('Demo'); /** ---------------- 响应接口请求 ---------------- **/ $api = new PhalApi(); $rs = $api->response(); $rs->output();
/** * 启动计划任务,支持异步处理 */ public function runTask() { $oldErrorHandler = set_error_handler(array(__CLASS__, 'myErrorHandler')); $config = DI()->config->get('app.Swoole.task'); $ip = isset($config['ip']) ? $config['ip'] : '127.0.0.1'; $port = isset($config['port']) ? $config['port'] : 9502; $workerNum = isset($config['worker_num']) ? $config['worker_num'] : 4; $serv = new swoole_server($ip, $port); $serv->set(array('task_worker_num' => $workerNum)); $serv->on('Receive', function ($serv, $fd, $fromId, $data) { $taskId = $serv->task($data); DI()->logger->debug("asynctask({$taskId}) dispath in swoole", $data); }); $serv->on('Task', function ($serv, $taskId, $fromId, $data) { DI()->logger->debug("asynctask({$taskId}) start in swoole", $data); $params = json_decode($data, TRUE); if (!is_array($params)) { $params = array(); } DI()->request = new PhalApi_Request($params); DI()->response = new Swoole_Response_Json(); try { $phalapi = new PhalApi(); $rs = $phalapi->response(); $apiRs = $rs->getResult(); $serv->finish($rs->formatResult($apiRs)); } catch (Exception $ex) { echo $ex->getTraceAsString(); DI()->logger->error("asynctask({$taskId}) exception in swoole", $ex->getMessage()); $serv->finish("Exception: " . $ex->getMessage()); //TODO 通知管理员 } if (DI()->notorm) { DI()->notorm->disconnect(); } }); $serv->on('Finish', function ($serv, $taskId, $data) { DI()->logger->debug("asynctask({$taskId}) finish in swoole", $data); $serv->close($taskId); }); $serv->start(); }