1
0
Fork 0
mirror of synced 2024-06-26 18:20:43 +12:00
appwrite/app/worker.php

84 lines
2.1 KiB
PHP
Raw Normal View History

2022-11-10 06:01:43 +13:00
<?php
require_once __DIR__ . '/init.php';
use Swoole\Runtime;
use Utopia\App;
use Utopia\Cache\Adapter\Sharding;
use Utopia\Cache\Cache;
use Utopia\Config\Config;
use Utopia\Database\Database;
2022-11-13 03:35:42 +13:00
use Utopia\Database\Document;
use Utopia\Queue\Message;
2022-11-10 06:01:43 +13:00
use Utopia\Queue\Server;
use Utopia\Registry\Registry;
global $register;
Server::setResource('register', fn() => $register);
Server::setResource('dbForConsole', function (Cache $cache, Registry $register) {
$pools = $register->get('pools');
$dbAdapter = $pools
->get('console')
->pop()
->getResource()
;
$database = new Database($dbAdapter, $cache);
$database->setNamespace('console');
return $database;
}, ['cache', 'register']);
2022-11-13 03:35:42 +13:00
Server::setResource('dbForProject', function (Cache $cache, Registry $register, Message $message, Database $dbForConsole) {
$args = $message->getPayload()['value'] ?? [];
$project = new Document($args['project'] ?? []);
if ($project->isEmpty() || $project->getId() === 'console') {
return $dbForConsole;
}
$pools = $register->get('pools');
$dbAdapter = $pools
->get($project->getAttribute('database'))
->pop()
->getResource()
;
$database = new Database($dbAdapter, $cache);
$database->setNamespace('_' . $project->getInternalId());
return $database;
}, ['cache', 'register', 'message', 'dbForConsole']);
2022-11-10 06:01:43 +13:00
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']);
App::setResource('logger', function ($register) {
return $register->get('logger');
}, ['register']);
$pools = $register->get('pools');
2022-11-16 05:03:42 +13:00
$connection = $pools->get('queue')->pop()->getResource();
2022-11-10 06:01:43 +13:00
$workerNumber = swoole_cpu_num() * intval(App::getEnv('_APP_WORKER_PER_CORE', 6));
$workerNumber = 1;
Runtime::enableCoroutine(SWOOLE_HOOK_ALL);