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

Есть табличка, содержащая параметры и их значения
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. А вообще надо исходить из задачи. Мне кажется ты придумал не самое правильное решение к какой то задаче, и сейчас спрашиваешь как быть с ним.
Скажи ЧТО ты пытаешься этим кодом решить, т.к. может существовать более красивое решение
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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