Как составить зависимость кэша для данной выборки?

Есть табличка, содержащая параметры и их значения
ek25.png
Так для модели формирую соединение
public function getDbConnection() {
	$params = Site::model()->findAll(array('select'=>'param_name,value','limit'=>'4'));
	$conStr = 'mysql:host=';
	foreach($params as $p) {
		switch($p[param_name]) {
			case 'mysql_host': $conStr .= $p[value].';dbname='; break;
			case 'mysql_dbname': $conStr .= $p[value]; break;
			case 'mysql_user': $username = $p[value]; break;
			case 'mysql_pass': $password = $p[value]; break;
		}
	}
	$connect = new CDbConnection($conStr,$username,$password);
	return $connect;
}


Как для данной выборки составить параметр $dependency для кэширования? Может можно как то из SHOW TABLE STATUS вытаскивать только update_time? Или может такой функционал лучше реализовать каким-то более удобным способом?
  • Вопрос задан
  • 2507 просмотров
Решения вопроса 1
@IgoNsk
backend web developer
А точно стоит хранить параметры подключения к MySQL БД в этой же базе? Мне кажется так делать не совсем правильно - ибо выглядит это весьма коряво. Или это все таки описываются настройки соединения с другой базой?

Если стоит задача хранить параметры в базе, то я бы добавил пару полей:
- время изменения параметра (таким образом можно будет запомнить последнее изменение параметров и кешировать по нему)
- группировать как то параметры логически - например завести еще одну сущность "Группа параметров", и в твоей таблице завести поле group_id. Тогда можно извлекать нужные тебе параметры не 'limit'=>'4' а group_id = ?.

p.s. А вообще надо исходить из задачи. Мне кажется ты придумал не самое правильное решение к какой то задаче, и сейчас спрашиваешь как быть с ним.
Скажи ЧТО ты пытаешься этим кодом решить, т.к. может существовать более красивое решение
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы