$register); Server::setResource('dbForConsole', function (Cache $cache, Registry $register) { $pools = $register->get('pools'); $database = $pools ->get('console') ->pop() ->getResource() ; $adapter = new Database($database, $cache); $adapter->setNamespace('console'); return $adapter; }, ['cache', 'register']); Server::setResource('dbForProject', function (Cache $cache, Registry $register, Message $message, Database $dbForConsole) { $payload = $message->getPayload() ?? []; $project = new Document($payload['project'] ?? []); if ($project->isEmpty() || $project->getId() === 'console') { return $dbForConsole; } $pools = $register->get('pools'); $database = $pools ->get($project->getAttribute('database')) ->pop() ->getResource() ; $adapter = new Database($database, $cache); $adapter->setNamespace('_' . $project->getInternalId()); return $adapter; }, ['cache', 'register', 'message', 'dbForConsole']); Server::setResource('cache', function (Registry $register) { $pools = $register->get('pools'); $list = Config::getParam('pools-cache', []); $adapters = []; foreach ($list as $value) { $adapters[] = $pools ->get($value) ->pop() ->getResource() ; } return new Cache(new Sharding($adapters)); }, ['register']); Server::setResource('queueForFunctions', function (Registry $register) { $pools = $register->get('pools'); return new Func( $pools ->get('queue') ->pop() ->getResource() ); }, ['register']); Server::setResource('logger', function ($register) { return $register->get('logger'); }, ['register']); Server::setResource('statsd', function ($register) { return $register->get('statsd'); }, ['register']); $pools = $register->get('pools'); $connection = $pools->get('queue')->pop()->getResource(); $workerNumber = swoole_cpu_num() * intval(App::getEnv('_APP_WORKER_PER_CORE', 6)); Runtime::enableCoroutine(SWOOLE_HOOK_ALL);