【问题标题】:Connecting and Testing Memcached with PHP使用 PHP 连接和测试 Memcached
【发布时间】:2013-02-04 02:09:15
【问题描述】:

在花了一些时间尝试在 MAMP 上设置 Memcached 之后,我可能会遇到一些麻烦......

在我的 php 信息文件中,它声明了 memcached 并显示了相关信息:

为了学习和使用 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 之间实际上存在不同的连接?或者,也许我设置了错误?任何建议或指导表示赞赏:)

【问题讨论】:

  • 简短回答:必须运行 MemcacheD 守护程序,仅将模块安装到 PHP 中是不够的。

标签: php memcached


【解决方案1】:

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

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); ?我仍然有点困惑,因为似乎所有的how-toos教程都是关于memcache的......例如pureform.wordpress.com/2008/05/21/…感谢任何帮助。
  • 是的,是的,大多数教程可能会讨论较旧的 memcache 客户端。 stackoverflow.com/questions/11926376/… 真的没有什么不同。稍微抽象一下代码并使用任一客户端会很容易。无论如何,这一切都记录在案:php.net/manual/en/class.memcached.php 只需要知道哪个是哪个:)
  • 当我做 $m = new Memcached(); $m->addServer(telnet,'localhost', 11211);给了我警告的错误:Memcached::addServer() 期望参数 2 很长,第 5 行的 /Applications/MAMP/htdocs/app/mem.php 中给出的字符串......太令人沮丧了。无论如何,即使我安装了 Memcached,我也可以使用 Memcache?
  • telnet 是一个工具,我建议使用它来确保 memcahced 服务正在运行并且可以访问。你只需要: $m->addServer('localhost', 11211); RTFM想用就用,已经提出我的建议了。
  • 我相信 telnet 适用于 Windows 环境,我可能应该说我使用的是 Mac。我看过手册...我尝试了以下代码只是为了测试一切是否正常,但由于某种原因没有任何回应...它只是一个空白页:-S $mc = new Memcached() ; $mc->addServer("localhost", 11211); $mc->set("foo", "Hello World"); echo $mc->get("foo");
【解决方案2】:

我找到了无法连接到 Memcached 的原因,并认为我会发布答案,以防万一有人遇到与我相同的问题。

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

memcached -d

据我所知,memcached 似乎需要有效地打开。上面的代码做到了。尽管每次重新启动机器时,您都必须按照我刚才所说的进行。我仍在寻找自动启动 memcached 的答案。如果我遇到它,我会更新这篇文章。

【讨论】:

  • 对于那些看到这个并希望自动启动它的人,您需要将其添加到/etc/init.d/memcached
猜你喜欢
  • 2011-04-13
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多