我得到了以下代码,如果调用的话,它应该将查询数据保存到 Memcached 中,并将其存储在那里 600 毫秒。但每次我加载页面时,$response
都是空的,并且 var_dump 显示 MISS。有什么想法我做错了吗? Memcached 服务器位于端口 11211 上,如 ps aux | grep memcached 告诉我。
$memcache = new Memcached();
$memcache->addServer("127.0.0.1", 11211);
$response = $memcache->get("test");
var_dump($response);
if ($response) {
var_dump('HIT');
$result = $response;
} else {
var_dump('MISS');
$sql = 'SELECT * FROM test WHERE bla BETWEEN "'.esc_sql($start).'" AND "'.esc_sql($end).'" ORDER BY datumbekanntgabe ASC';
$result = $this->mydb->get_results($sql);
$memcache->set("test", $result, 0, 600);
}
return $result;
最佳答案
看起来好像在调用中使用 0 作为超时...
$memcache->set("test", $result, 0, 600);
在 memcache ,第三个参数 - 0 是用于压缩的flag
,而第四个参数是超时,在 memcached 中。虽然这个标志不存在,所以调用应该是
$memcache->set("test", $result, 600);
关于php - Memcached不保存生成的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53068392/