public function enable() { if (Globals::RUNTIME_MODE_CLI !== App::environment(Globals::ENV_RUNTIME_MODE)) { return false; } return true; }
public function handle() { if (Globals::RUNTIME_MODE_CLI !== App::environment(Globals::ENV_RUNTIME_MODE)) { throw new ConsoleException("Only run in command line mode"); } //加载Worker并为每个Worker创建一个子进程,然后进入休眠,当接收到信号量时,则执行相应的进程调度操作。 if (!function_exists("pcntl_signal")) { throw new ConsoleException("PHP does not appear to be compiled with the PCNTL extension.This is neccesary for daemonization"); } if (function_exists("gc_enable")) { gc_enable(); } $daemon = Daemon::make($_SERVER['argc'], $_SERVER['argv']); try { /** * @var $daemon Daemon */ if (isset($daemon)) { $daemon->start(); sleep(1); Console::line("Daemon [" . $daemon->getPID() . "] started."); } } catch (\Exception $ex) { throw new DaemonException($daemon->getName(), $ex->getMessage(), $ex); } }
/** * @param string $database * @return DB */ private static function getInstance($database) { if (!isset(self::$instances) || !array_key_exists($database, self::$instances) || self::$currentDatabase !== $database) { self::$instances[$database] = self::create(App::environment(Globals::ENV_DATABASE_PROVIDER), $database); self::$currentDatabase = $database; } return self::$instances[$database]; }
private static function getFilePath($viewName) { $filePath = str_replace('.', '/', $viewName); $extension = App::environment(Globals::ENV_MVC_VIEW_FILE_EXTENSION); if (!isset($extension) || $extension === '') { $extension = self::ENV_VIEW_FILE_EXT; } return App::path('app') . self::VIEW_BASE_PATH . $filePath . '.' . $extension; }
public function handle() { $this->router = Router::getInstance(App::path('routes'), App::path('filter')); $defaultRouterToken = App::environment(Globals::ROUTER_DEFAULT_TOKENS); if (isset($defaultRouterToken) && !empty($defaultRouterToken)) { $this->router->baseMappings['default']['default'] = $defaultRouterToken; } else { $defaultRouterToken = $this->router->baseMappings['default']['default']; } $this->router->registerMatchedHandler(function ($params) { DI::bindSingleton(Request::class, new Request($params)); DI::bindSingleton(Response::class, new Response()); }); $this->router->registerDefaultMatchedHandler(function ($params) use($defaultRouterToken) { $namespace = null; if (array_key_exists('namespace', $params)) { $namespace = $params['namespace']; } if (array_key_exists('controller', $params)) { $controller = $params['controller']; } if (array_key_exists('action', $params)) { $action = $params['action']; } if (!isset($controller)) { $controller = $defaultRouterToken['controller']; } if (!isset($action)) { $action = $defaultRouterToken['action']; } Controller::invoke($controller, $action, $namespace); }); $this->router->missing(function () { throw new URLRouterException("URL Routing missing."); }); $this->router->routing(); }