我有以下代码:
foreach( ... )
{
$m = new Memcache;
$m->connect('10.1.1.243', 11211);
$key = ... // calculate key
$data = $m->get($key);
if($data) return $data;
$data = ... // else fetch data from sql
$m->set($key, $data, 3600);
return $data;
}
循环大约100次。并且总是缺少$ m-> get($ key)语句来从memcache获取数据。
有什么想法吗?感谢。
btw:我正在使用与memcache服务器的持久连接。不知道它是否相关。我实际上试图将新的Memcache和connect()部分移到外面,但我遇到了同样的问题。
答案 0 :(得分:0)
你的foreach循环没用,因为你使用'return'退出函数并打破循环。
btw:不要多次调用'new Memcache'和'connect()'。
答案 1 :(得分:0)
有几件事:
return
中进行foreach
- 因此,您根本没有循环,$key
是否相同 - 尝试将其设置为相同的值,仅用于测试,$data
,但如果你正在进行任何操作,请检查if($data)
是否正在测试某些内容(即$ data已定义且不是false),根据http://www.php.net/manual/en/memcache.set.php,您应该使用set
,如下所示:
$ m-> set($ key,$ data,0,3600);