public function Bootstrap() { /** @var array $servicesConfig */ $servicesConfig = (include DI_REGISTRY_PATH . '/Server.php'); Application::AutoRegistry($servicesConfig); $this->setAlias(); }
/** * 进程启动时被触发 * * @param \swoole_server $server 当前进程的swoole_server对象 * @param int $worker_id 当前进程的ID */ public function OnWorkerStart(\swoole_server $server, $worker_id) { Log::Notice("On Worker[{$worker_id}] Start."); $workerStrapps = (include Application::GetFrameworkPath() . '/Registry/Worker.php'); Application::AutoRegistry($workerStrapps); Event::Listen('OnWorkerStart', [&$server, &$worker_id]); }
/** * 进程启动时被触发 * * @param \swoole_server $server 当前进程的swoole_server对象 * @param int $worker_id 当前进程的ID */ public function OnTaskWorkerStart(\swoole_server $server, $task_worker_id) { Log::Notice("On Task Worker[{$task_worker_id}] Start."); if (file_exists(Application::GetServerPath() . '/Registry/TaskWorker.php')) { $registry = (include Application::GetServerPath() . '/Registry/TaskWorker.php'); Application::AutoRegistry($registry); } Event::Listen('OnTaskWorkerStart', [&$server, &$task_worker_id]); }
/** * Worker进程启动时触发并划分普通worker进程和task进程 * * @param \swoole_server $server * @param int $worker_id * * @throws \DIServer\Container\NotRegistedException * @throws \DIServer\Container\NotTypeOfInstanceException */ public function OnWorkerStart(\swoole_server $server, $worker_id) { //清理opcache opcache_reset(); //各个进程的$server对象不是同一个,要重置。 Container::Unregister(\swoole_server::class); Container::RegisterClassByInstance(\swoole_server::class, $server); Application::AutoRegistry('CommonWorker.php', true); if ($server->taskworker) { $this->taskerServer = Container::GetInstance(ITaskWorkerServer::class); Application::AutoRegistry('TaskWorker.php', true); Event::Listen('OnTaskWorkerStart', [&$server, &$worker_id]); $this->taskerServer->OnTaskWorkerStart($server, $worker_id); } else { $this->workerServer = Container::GetInstance(IWorkerServer::class); Application::AutoRegistry('Worker.php', true); Event::Listen('OnWorkerStart', [&$server, &$worker_id]); $this->workerServer->OnWorkerStart($server, $worker_id); } }