This commit is contained in:
xl
2024-11-15 14:16:37 +08:00
parent 8440104053
commit edc7371d9b
2 changed files with 14 additions and 4 deletions
+5 -2
View File
@@ -4,6 +4,8 @@ declare(strict_types=1);
namespace Kiri\Router;
use Kiri\Abstracts\CoordinatorManager;
use Kiri\Coordinator;
use Kiri\Di\Inject\Container;
use Kiri\Di\Context;
use Kiri\Di\Interface\ResponseEmitterInterface;
@@ -77,8 +79,9 @@ class OnRequest implements OnRequestInterface
try {
$PsrRequest = $this->initRequestAndResponse($request);
$PsrResponse = $this->router->query($request->server['path_info'], $request->getMethod())
->run($PsrRequest);
CoordinatorManager::utility(Coordinator::WORKER_START)->yield();
$PsrResponse = $this->router->query($request->server['path_info'], $request->getMethod())->run($PsrRequest);
} catch (Throwable $throwable) {
$PsrResponse = $this->exception->emit($throwable, $this->constrictResponse);
} finally {
+9 -2
View File
@@ -5,6 +5,8 @@ namespace Kiri\Router;
use Closure;
use Kiri;
use Kiri\Abstracts\CoordinatorManager;
use Kiri\Coordinator;
use Kiri\Router\Validator\ValidatorMiddleware;
use Kiri\Router\Base\Middleware as MiddlewareManager;
use Kiri\Router\Constrict\RequestMethod;
@@ -174,12 +176,17 @@ class Router
*/
public function scan_build_route(): void
{
$coordinator = CoordinatorManager::utility(Coordinator::WORKER_START);
$coordinator->waite();
$this->read_dir_file(APP_PATH . 'routes');
$container = Kiri::getDi();
$scanner = di(Kiri\Di\Scanner::class);
$scanner = $container->get(Kiri\Di\Scanner::class);
$scanner->load_directory(APP_PATH . 'app/Controller');
$this->reset($container);
$coordinator->done();
}
@@ -190,7 +197,7 @@ class Router
*/
public function reset(ContainerInterface $container): void
{
$router = $container->get(DataGrip::class)->get(static::$type);
$router = $container->get(DataGrip::class)->get(static::$type);
foreach ($router->getMethods() as $name => $method) {
$middlewares = MiddlewareManager::get($method->getClass(), $method->getMethod());
$validator = MiddlewareManager::getValidator($method->getClass(), $method->getMethod());