ПЛАТФОРМА PHP API Multi Tenancy Doctrine DBPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 ПЛАТФОРМА PHP API Multi Tenancy Doctrine DB

Сообщение Anonymous »

У меня возникла проблема с мультитенантностью в ПЛАТФОРМЕ PHP API, когда я пытаюсь сделать что-то подобное с классом Wrapper:

Код: Выделить всё

doctrine:
dbal:
connections:
default:
wrapper_class: App\Doctrine\TenantConnection
driver: pdo_mysql
host: '%env(resolve:DATABASE_HOST)%'
port: 3306
user: '%env(resolve:DATABASE_USER)%'
password: '%env(resolve:DATABASE_PASSWORD)%'
charset: UTF8MB4

Код: Выделить всё

class TenantConnection extends Connection
{
public function __construct(array $params, $driver, $config)
{
$tenantId = $_SERVER['HTTP_TENANT_ID'] ?? null;
$dbName = // get by $tenantId from json (simply)
$params['dbname'] = $dbName; // dynamic change of DB Name

try {
parent::__construct($params, $driver);
} catch(ConnectionException $e) {

}
}
}
Когда я запускаю это локально, все работает нормально. Но когда я собираю док-файл в GKE, он терпит неудачу, потому что $_SERVER['HTTP_TENANT_ID'] не определен (в каком-то эксперименте, когда я пытаюсь вызвать контроллер, который возвращал $_SERVER['HTTP_TENANT_ID'] все было хорошо и присутствовало).
Есть ли проблемы с Caddy/Franken на производстве? Я думаю, что весь контейнер загружается в кеш, поэтому все HTTP-запросы будут выполняться быстрее. Но как я могу изменить свой эксперимент с несколькими арендаторами, чтобы это сработало? Или это плохая практика? Я хотел бы избежать наличия нескольких бэкэндов, где будет изменено только имя dbName (из env). Спасибо за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/782 ... octrine-db
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»