使用PHP连接和测试Memcached

4
在尝试在MAMP上设置Memcached一段时间后,我遇到了一些麻烦...
在我的php info文件中,它声明了Memcached并显示了相关信息: Image of php info file 为了学习和使用Memcached,我使用了以下教程: http://net.tutsplus.com/tutorials/php/faster-php-mysql-websites-in-minutes/?search_index=1 这是我遇到的第一个问题,即连接到缓存服务器:使用他们所述的方法似乎不起作用。
define('MEMCACHED_HOST', '127.0.0.1');
define('MEMCACHED_PORT', '11211');
$memcache = new Memcache;
$cacheAvailable = $memcache->connect(MEMCACHED_HOST, MEMCACHED_PORT);

我试图将127.0.0.1更改为localhost,但这并没有起作用。我的第一步是将memcache更改为memcached...但仍然没有起作用。

因此,我只想澄清如何连接和测试是否已经与Memcached建立了连接。如果Memcache和Memcached之间实际上有不同的连接方式?或者可能我设置错了什么?任何建议或指导都将不胜感激 :)


1
简短回答:必须运行MemcacheD守护进程,仅仅安装PHP模块是不够的。 - Alister Bulman
2个回答

4

首先,我想你应该尝试使用telnet连接到memcached。

telnet 127.0.0.1 11211

这里有一些技术文档,假设你已经连接: http://lzone.de/articles/memcached.htm 如果无法通过 telnet 连接,则表明你的设置存在问题或者被某个防火墙屏蔽。
PHP有两个客户端:memcachememcached。我建议使用memcached(我真不知道为什么他们把客户端命名成一个守护进程的样子 - 让我很烦恼)。更新的memcached客户端支持CAS操作和其他一些新特性。
然而,你正在使用的连接代码更像是 memcache。对于 memcached,您需要设置一个服务器池或仅使用addServer()

感谢@ficuscr的回复,这是否意味着连接将是$m = new Memcached(); $m->addServer(telnet,'localhost', 11211);?我仍然有点困惑,因为似乎所有关于如何使用的教程都是关于memcache...例如http://pureform.wordpress.com/2008/05/21/using-memcache-with-mysql-and-php/ 感激任何帮助。 - HireLee
是的,大多数教程可能会谈论旧版的memcache客户端。https://dev59.com/oGct5IYBdhLWcg3wpfBc 它真的没有那么不同。只需稍微抽象代码并使用任何一个客户端即可。无论如何,这都有文档记录:http://www.php.net/manual/en/class.memcached.php 只需要知道哪个是哪个 :) - ficuscr
当我执行 $m = new Memcached(); $m->addServer(telnet,'localhost', 11211); 时,出现了以下错误:Warning: Memcached::addServer() expects parameter 2 to be long, string given in /Applications/MAMP/htdocs/app/mem.php on line 5... 真是令人沮丧。我是否有办法在安装了Memcached的情况下仍然使用Memcache? - HireLee
"telnet"是一个工具,我建议使用它来确保memcached服务正在运行并且可达。你只需要:$m->addServer('localhost', 11211); RTFM 使用你想要的,我已经提出了我的建议。 - ficuscr
我认为telnet是用于Windows环境的,我可能应该说明我正在使用Mac。我已经查看了手册... 我尝试了以下代码只是为了测试一下是否一切正常,但出于某种原因没有任何东西被回显... 它只是一个空白页面 :-S $mc = new Memcached(); $mc->addServer("localhost", 11211); $mc->set("foo", "Hello World"); echo $mc->get("foo"); - HireLee
https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/telnet.1.html - ficuscr

4

我找出了为什么无法连接到Memcached的原因,并想发布答案,以防有人遇到和我一样的问题。

解决方案是在终端中输入以下内容:

memcached -d

根据我的了解,似乎需要启用memcached。上述代码就是这样做的。但是每次重新启动计算机时,您都需要执行我刚才提到的操作。我仍在寻找自动启动memcached的方法。如果我找到了,我会更新这篇文章。


1
只针对那些想要自动启动它的人,你需要将其添加到 /etc/init.d/memcached - bgallagh3r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接