$v) { $response->setHeader($k, $v); } unset(Context::$context[Coroutine::getCid()]); Console::debug('Calling Swoole "request" event from fd=' . $request->fd); set_coroutine_params(['request' => $request, 'response' => $response]); $dis1 = new EventDispatcher(OnRequestEvent::class); $dis1->setRuleFunction(function ($v) { return eval('return ' . $v->getRule() . ';') ? true : false; }); $dis = new EventDispatcher(OnSwooleEvent::class); $dis->setRuleFunction(function ($v) { if ($v->getRule() == '') { return strtolower($v->type) == 'request'; } if (strtolower($v->type) == 'request' && eval('return ' . $v->getRule() . ';')) { return true; } return false; }); try { $dis1->dispatchEvents($request, $response); $dis->dispatchEvents($request, $response); if ($dis->status === EventDispatcher::STATUS_NORMAL && $dis1->status === EventDispatcher::STATUS_NORMAL) { $result = HttpUtil::parseUri($request, $response, $request->server['request_uri'], $node, $params); if ($result === true) { ctx()->setCache('params', $params); $dispatcher = new EventDispatcher(RequestMapping::class); $div = new RequestMapping(); $div->route = $node['route']; $div->params = $params; $div->method = $node['method']; $div->request_method = $node['request_method']; $div->class = $node['class']; //Console::success("正在执行路由:".$node["method"]); $dispatcher->dispatchEvent($div, null, $params, $request, $response); if (is_string($dispatcher->store) && !$response->isEnd()) { $response->end($dispatcher->store); } } } if (!$response->isEnd()) { //Console::warning('返回了404'); HttpUtil::responseCodePage($response, 404); } } catch (InterruptException $e) { // do nothing } catch (Exception $e) { $response->status(500); Console::info( $request->server['remote_addr'] . ':' . $request->server['remote_port'] . ' [' . $response->getStatusCode() . '] ' . $request->server['request_uri'] ); if (!$response->isEnd()) { if (ZMConfig::get('global', 'debug_mode')) { $response->end(zm_internal_errcode('E00023') . 'Internal server exception: ' . $e->getMessage()); } else { $response->end(zm_internal_errcode('E00023') . 'Internal server error.'); } } Console::error(zm_internal_errcode('E00023') . 'Internal server exception (500), caused by ' . get_class($e) . ': ' . $e->getMessage()); Console::log($e->getTraceAsString(), 'gray'); } catch (Error $e) { $response->status(500); Console::info( $request->server['remote_addr'] . ':' . $request->server['remote_port'] . ' [' . $response->getStatusCode() . '] ' . $request->server['request_uri'] ); if (!$response->isEnd()) { $error_msg = $e->getMessage() . ' at ' . $e->getFile() . '(' . $e->getLine() . ')'; if (ZMConfig::get('global', 'debug_mode')) { $response->end(zm_internal_errcode('E00023') . 'Internal server error: ' . $error_msg); } else { $response->end(zm_internal_errcode('E00023') . 'Internal server error.'); } } Console::error(zm_internal_errcode('E00023') . 'Internal server error (500), caused by ' . get_class($e) . ': ' . $e->getMessage()); Console::log($e->getTraceAsString(), 'gray'); } } }