/** * 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) { //各个进程的$server对象不是同一个,要重置。 Container::Unregister(\swoole_server::class); Container::RegisterClassByInstance(\swoole_server::class, $server); $reloadConfig = (include Application::GetFrameworkPath() . '/Registry/ServerReload.php'); Container::AutoRegistry($reloadConfig); if ($server->taskworker) { $this->taskerServer = Container::GetInstance(ITaskWorkerServer::class); $this->taskerServer->OnTaskWorkerStart($server, $worker_id); } else { $this->workerServer = Container::GetInstance(IWorkerServer::class); $this->workerServer->OnWorkerStart($server, $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); } }