使用memcache与PHP

7
我想开始在Ubuntu 9.10上使用PHP的memcache。网上有很多信息似乎展示了如何做到这一点。然而,令人惊讶的是,迄今为止我看到的所有文章都没有明确说明在尝试使用之前是否需要运行memcache进程,或者通过简单调用PHP客户端库中的new MemCache()是否会生成进程(如果未运行)。
根据我目前阅读的各种文档,以下是我认为有意义的步骤:
1. 在您的机器上安装memcache(有几篇文档展示了如何做到这一点) 2. 修改php.ini文件并将与memcache相关的常量/标志设置为适合您的环境的值 3. 创建一个init脚本在ini.d中启动memcache作为守护进程 4. 重新启动Apache守护进程
第三步是我需要确认的部分,因为我看到的所有文档都没有提及memcache进程的寿命。
有经验的人能否确认这是正确的步骤? 如果我漏掉了某个步骤,请告诉我。
另外,由于我相对较新于Linux,如果有人可以发布一个示例init脚本以运行memcache守护进程(假设我上面概述的步骤是正确的),我将不胜感激。

1
请在http://serverfault.com/上提问。 - N 1.1
2个回答

11

Memcached和Apache+PHP起初是两个完全无关的东西,唯一的联系就是PHP要连接到memcached守护进程。

所以,是的,必须在使用之前启动memcached (注意末尾的'd') :如果你在memcached服务器未运行时尝试连接,你就无法连接--它不会生成新的守护进程或其他任何东西。

简单比较一下:如果Apache服务器未启动并且您尝试使用浏览器访问它,您将收到“无法连接”的错误;这与PHP尝试连接到memcached完全相同:它将无法连接。


现在,对于安装过程,以下是几个需要说明的部分:

  • 在您的机器上安装memcached
    • 如果您使用发行版机制进行安装,则应在/etc/init.d/中创建该脚本
    • 它还应该启动守护程序
    • 作为提醒,在Ubuntu上安装某些东西,您应该使用apt-get install memcachedaptitude install memcached
  • 在修改php.ini之前,您必须为PHP安装memcache扩展--因此PHP具有连接到memcached的功能。
    • 可以使用您的发行版的php5-memcache包来完成这个工作
    • 或者使用pecl install memcache命令,该命令将从pecl.php.net下载源代码并编译它们--这意味着您需要编译软件所需的所有内容。


编辑:在此回答比在评论中更容易

我说安装memcached应该是没有问题的 - 在Ubuntu上,似乎有一个陷阱:

使用以下命令:

ps -Alf | grep memcached

我没有看到任何正在运行的守护程序。

当我尝试启动守护进程时,我会得到以下信息:

$ sudo /etc/init.d/memcached start
Starting memcached: memcached disabled in /etc/default/memcached.

因此,在Ubuntu上,您需要编辑/etc/default/memcached并将其更改为以下内容:
# Set this to yes to enable memcached.
ENABLE_MEMCACHED=no

它应该包含以下内容:

# Set this to yes to enable memcached.
ENABLE_MEMCACHED=yes

那么,启动memcached应该是可以的:

$ sudo /etc/init.d/memcached start
Starting memcached: memcached.
test@tests: ~/temp
$ ps -Alf | grep mem
4 S nobody    3813     1  0  80   0 - 30025 ep_pol 00:17 pts/4    00:00:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1
0 R test      3819  2690  0  80   0 -  1834 -      00:17 pts/4    00:00:00 grep --color=auto mem

注意:现在 memcached 已经启用,它应该会在您重启系统时自动启动。

非常好的回答。我已经安装了memcached,但是我不确定守护进程是否正在运行。使用您的说明,我能够再次检查并确认init脚本的存在。顺便说一句,运行php -i | grep -i memcache会显示已安装memcache扩展。我仍然无法确认守护程序是否正在运行,因为当我键入ps时,我看不到memcache守护程序进程的名称。(我知道我可以编写一个小的php脚本来测试memcache,但这不是重点)。那么,我该如何检查守护进程是否正在运行? - Stick it to THE MAN
1
@Stick:我已经尝试过,并找出了问题;由于解释有点长,所以我编辑了我的答案,包括一些额外的信息。 - Pascal MARTIN
1
非常棒的答案!非常感谢你,Pascal。 - Stick it to THE MAN
1
不客气 :-) 玩得开心!(碰巧,我刚安装了一个运行最新版本Ubuntu的虚拟机 - 还没有启用memcached) - Pascal MARTIN

0
sudo apt-get install memcached
If you do not have a compiler on your server, you can download build-essential in order to install memcache: 
sudo pecl install memcache
Finally use PECL (PHP Extension Community Library) to install memcache
sudo pecl install memcache
Once you have completed the installation of memcache with PECL on the VPS, add memcached to memcache.ini

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