mitaichik
@mitaichik

Как в конфиге задать SQL, вполняющийся после создания DbConnection?

Всем привет!

Запускаю php-воркеры. Для них после подключения к базе нужно выполнить
SET wait_timeout = 259200;
SET interactive_timeout = 259200;

чтоб не падали когда без действия стоят.

Хотелось бы как-нить в конфиге приложения задать это, чтоб не переопределять DbConnection::init, но не пойму как это сделать.

Есть ли такая возможность?
Заранее спасибо!
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
vakorovin
@vakorovin
Разработчик
Добрый день. Попробуйте вот что: в yii\db\Connection есть несколько триггеров, вам определенно нужно зацепиться за EVENT_AFTER_OPEN.
Что-то в духе:
...
'db' => [
	'class' => 'yii\db\Connection',
	'dsn' => 'mysql:host=localhost;dbname=mydb',
	'username' => 'myname',
	'password' => 'mypassword',
	'charset' => 'utf8',
	'on ' . yii\db\Connection::EVENT_AFTER_OPEN => function () {
				Yii::$app->db->createCommand("SET wait_timeout = 259200")->execute();
		Yii::$app->db->createCommand("SET interactive_timeout = 259200")->execute();
   },
]
...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы