dakata__92
Super Moderator
Колеги, имам един код на Laravel 6, който е качен на VPS-ка. С него се опитвам да направя кеширане на информация от заявка без да използвам "Query builder".
Така викам кода:
Проблема ми е, че не успявам да направя кеширането. Някъде бъркам концептуално в използването на кеширането или някъде по опциите я на сървъра, я на Ларавел трябва да пипна? Получавам информация от базата, но когато направя в нея промяна ръчно през едитора, веднага се отразява и в системата, а не би трябвало. По принцип трябва да ми покаже кешираната НЕ променена стойност, докато изтече времето и. Дали е защото изполвам "remember"?
Код:
public function getMemcache(String $sql, Array $options = [])
{
if (!isset($sql) and !is_string($sql)) {
throw new \Exception("No SQL string!");
}
$options['ttl'] = (isset($options['ttl']) and (int) $options['ttl']) ? $options['ttl'] : 3600;
$options['key'] = isset($options['key']) ? $options['key'] : md5($sql);
$options['reset'] = isset($options['reset']) ? true : false;
$options['reset_all'] = isset($options['reset']) ? true : false;
$options['ip'] = isset($options['ip']) ? $options['ip'] : false;
self::$memcahe['sql'] = $sql;
self::$memcahe['options'] = $options;
if ($options['reset']) {
cache()->forget($options['key']);
}
if ($options['reset_all']) {
cache()->flush();
}
return cache()->remember($options['key'], $options['ttl'], function () {
return self::getDb()::query(self::$memcahe['sql'], self::$memcahe['options']['ip']);
});
}
Така викам кода:
Код:
$memcacheOptions = [
'server_ip' => $servers[$i]['server_ip'],
'ttl' => 3600
];
$buffers[$i] = self::getMemcache("SELECT COUNT(id) as count FROM table ", $memcacheOptions)->fetch_object()->count;
Проблема ми е, че не успявам да направя кеширането. Някъде бъркам концептуално в използването на кеширането или някъде по опциите я на сървъра, я на Ларавел трябва да пипна? Получавам информация от базата, но когато направя в нея промяна ръчно през едитора, веднага се отразява и в системата, а не би трябвало. По принцип трябва да ми покаже кешираната НЕ променена стойност, докато изтече времето и. Дали е защото изполвам "remember"?