@River0051

Как кэшировать mysql запрос в переменной?

Добрый день, пытаюсь кэшировать результат запроса в redis, но ничего не получается, переменная пустая и я не пойму почему

function get60_v1($_60n) {
	global $wpdb;
	ob_start();
	$s_1 = $wpdb->get_row(
		"
		SELECT *
		FROM learn 
		WHERE s_name = '".$_60n->name."'
	" 
	);
	return ob_get_clean();
}

$key_60_sql = $pname.':'.get_field('user_version');
if ($redis->exists($key_60_sql)) {
  $s_1 = $redis->get($key_60_sql);
} else {
$sql_60 = get60_v1($_60n);
  // вычисляете свой кусок, затем
  $redis->set($key_60_sql, $sql_60);
  $redis->expire($key_60_sql, 604800); // 1 неделя
  $s_1 = $redis->get($key_60_sql);
}


Подскажите что я делаю не правильно ?

P.S Кэширование html и PHP проходит без проблем
P.S Если функцию выполнить без попытки кэширования, то переменная получает данные
function get60_v1($_60n) {
	global $wpdb;
	$s_1 = $wpdb->get_row(
		"
		SELECT *
		FROM learn 
		WHERE s_name = '".$_60n->name."'
	" 
	);
	return $s_1;
}
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
@River0051 Автор вопроса
Решил проблему так

$key_60_sql = $pname.':'.get_field('user_version');
if ($redis->exists($key_60_sql)) {
  $_s_3 = $redis->hgetall($key_60_sql);
  $s_3 = (object)$_s_3;
} else {
$sql_60 = $wpdb->get_row (
		"
	SELECT *
	FROM learn 
	WHERE s_name = '".$_60n->name."'
	"
	);
	$array = (array)$sql_60;
  // вычисляете свой кусок, затем
  $redis->hMSet($key_60_sql, $array);
  $redis->expire($key_60_sql, 604800); // 1 неделя
  $_s_3 = $redis->hgetall($key_60_sql);
  $s_3 = (object)$_s_3;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
$60n - это как? А как же:

Правильное имя переменной должно начинаться с буквы или символа подчеркивания и состоять из букв, цифр и символов подчеркивания в любом количестве.

https://www.php.net/manual/ru/language.variables.b...
Ответ написан
Ваш ответ на вопрос

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

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