【发布时间】:2013-03-09 02:06:03
【问题描述】:
我以前从未使用过 memcache,所以请原谅我的经验不足。虽然这很容易解释,但我想确保我正确使用内置函数,因为我正在创建一个将用于商业用途的类,因此它必须正确编码和高效。
我有几个问题,但由于它们非常基础,我觉得可以将它们组合成一个 Stackoverflow 问题。
如果他们需要论文答案,请不要打扰,我会将其作为单独的问题发布
- 什么时候需要使用
memcache::addServer,这和memcache::connect有什么区别? - 如果内存不足,memcache 是否会覆盖存储的值,即使项目尚未过期?
-
memcache::getExtendedStats可以用来做什么? - 如何检查是否已存在与 memcache 的连接,如果不存在,则创建一个连接?
- 如果我设置了我常用的“localhost”内存缓存服务器,我将如何在同一台专用服务器上设置另一个内存缓存服务器?
- 除了更多的内存之外,拥有多个 Memcache 服务器还有什么好处?
- 我应该定期检查内存缓存服务器更新吗?
- 是否在每页开头运行 memcache::connect 会占用大量内存,即使我不使用它?
- 什么时候可能会返回错误以及如何捕获这些错误?
- 最重要的是,如果我在另一个类中使用 memcache,该类有多个方法,每个脚本可能会调用不止一次,我应该如何初始化对象并在每个方法中连接到服务器?强>
我对最后一个问题的猜测是:
class test {
public function blah(){
// Make sure the memcache object is accessible
global $memcache;
// Do something ...
// Save result in memcache
$memcache->set(...);
}
public function foo(){
// Do something ...
// No use for memcache
}
}
// Initialise each class
$test = new test;
$memcache = new memcache;
$memcache->connect(...);
// Call some methods from the test class
$test->blah();
$test->foo();
$test->blah();
正如您在上面的示例中看到的,我在脚本开头连接到内存缓存服务器。如果我在每个页面的开头都包含此内容,即使是在不使用内存缓存的页面上,这会大大增加响应时间还是增加最少的响应时间? 因此,问题 8!
【问题讨论】:
-
你在“书”上找到答案了吗? (php.net/manual/en/book.memcache.php) 或者……在维基上? (code.google.com/p/memcached/wiki/NewStart)
-
我已经通读了 php.net 指南,虽然它很好地解释了每个功能,但并没有明确说明 memcache 的工作原理,更重要的是,它没有回答我的具体问题
-
我明白了。好吧,我仍然建议首先挖掘一些答案。 PHP Memcache 书上也有很多 cmets,像这样 (php.net/manual/en/memcache.addserver.php#104484) 可能有助于回答您的一些问题。 :)
-
会做的,谢谢你的帮助
-
没问题...我之前没有太多帮助,但是,我刚才尝试回答了您的所有问题。希望对您有所帮助...