我刚刚在 Mac OS X 10.6.8 上安装了 memcached。它安装得很完美,当我在终端中输入时,memcached
我得到了这个:
failed to listen on TCP port 11211 tcp
listen: Address already in use
我的本地主机中有一个包含以下内容的脚本:
$memcache = new Memcache();
但是我收到一条错误消息Fatal error: Class 'Memcache' not found
。
我怎样才能让 memcached 工作,是不是因为端口 11211 没有被监听,这可能会导致 memcached 无法工作?
答案1
第一个错误可能是因为 memcached 已在运行。如果你运行,ps -e | grep memcache | grep -v grep
你可能会看到它。 的输出netstat -a -p tcp | grep LISTEN
也会显示所有正在监听的服务,这可能会有所帮助。
第二个问题可能是因为你没有为你的 PHP 版本安装 memcache 扩展(从错误中我假设你使用的是 PHP)。你可能需要http://pecl.php.net/package/memcache来解决这个问题。
答案2
Memcache 可能已在运行。我运行的 memcache 版本崩溃了,因此出现了这个问题。
我发现这很有帮助:
netstat -l --protocol=tcpip --program
一旦我有了 pid,我就终止了 memcache
然后我编辑了配置
vi /etc/sysconfig/memcached
我补充道
OPTIONS="-l 127.0.0.1"
答案3
我也遇到了你报告的第一个错误:
failed to listen on TCP port 11211 tcp
listen: Address already in use
在我的配置中,我发现错误是由-l
同一地址的多个参数引起的。在 Ubuntu 上,我的/etc/memcached.conf
文件包含:
-l localhost
-l 127.0.0.1
memcached 能够成功绑定到第一个地址,但是由于127.0.0.1
重复,当 memcached 尝试绑定到第二个地址时localhost
出现错误。Address already in use
如果您遇到此错误并且找不到绑定到您的端口的现有进程,请仔细检查您的 memcached 配置。如果您正在监听多个地址上的连接,请确保这些地址不代表同一个地址。这样的设置可能会导致此错误。
答案4
就我的情况而言,这是因为memcached
已在运行。尝试:
$ ps aux | grep memcache | grep -v grep
jill.doe 93302 0.0 0.0 408916512 1888 ?? Ss 11:39am 0:00.04 memcached
您需要执行以下操作PID
来终止该进程:
$ kill 93302
这至少应该可以解决这个failed to listen on TCP port 11211 tcp
问题。