要检验您的 PHP 构建是否已安装,请单击左侧的 phpinfo() 链接。您应当会看到类似图 2 中所示的统计信息。PHP 的版本应当是 4.4.6,构建选项应当包括 --enable-memcache,并且 php.ini 的工作版本应当驻留在 /opt/lampp/lib 中。

2. 检验 PHP 的自定义构建是否替换了 XAMPP 附带的 PHP 构建

构建 PHP Memcache 扩展

   
新的 PHP 就绪后,下一步是构建和安装 PHP Memcache 扩展。该扩展将提供访问 Memcache 守护程序的服务所需的 API。首先将检索 Memcache 扩展的源代码。您可以再次使用 wget 来获得源代码,请使用以下命令:

$ wget http://pecl.php.net/get/memcache-2.1.0.tgz

    构建 Memcache 扩展的过程与构建其他 PHP 扩展的过程完全相同:

切换到源代码的目录
运行 phpize,后接 ./configuremake make install
确保使用新版本的 phpize
/opt/lampp/bin 放到 shell PATH 中,位于包含其他版本的 phpize 的所有目录之前:

$ cd memcache-2.1.0

$ export PATH=/opt/lampp/bin:$PATH

$ phpize

$ ./configure

$ make

...

$ sudo make install

Installing shared extensions:

/opt/lampp/lib/php/extensions/no-debug-non-zts-20020429/

构建将把一个名为 memcache.so 的新文件放入扩展目录。要加载并应用扩展,您必须编辑 php.ini。打开 XAMPP PHP 配置文件 /opt/lampp/etc/php.ini 并添加清单 3 中的代码行。

清单 3. 编辑 php.ini

extension=memcache.so

memcache.allow_failover = 1

memcache.max_failover_attempts=20

memcache.chunk_size =8192

memcache.default_port = 11211

1 行将加载 Memcache 扩展。其他四行是用于控制扩展的参数。按顺序,从顶部到底部:

memcache.allow_failover
一个布尔值,用于控制当连接出错时 Memcache 扩展是否故障转移到其他服务器上。默认值为 1 (true)
memcache.max_failover_attempts
一个整型值,用于限制连接到持久性数据或检索数据的服务器数目。如果 memcache.allow_failover false,则将忽略此参数。默认值为 20
memcache.chunk_size
一个整型值,用于控制数据传输的大小。默认值为 8192 字节 (8 KB),但是如果设置为 32768 (32 KB),则可以获得更好的性能。
memcache.default_port
另一个整型值,用于设置连接到 Memcache 所使用的 TCP 端口。除非您修改它,否则默认值为无特权的高端口 11211
要确定构建现在是否能够完全运行,请使用以下命令重新启动 XAMPP Apache Web 服务器:

$ sudo /opt/lampp/bin/apachectl restart

如果重新访问 XAMPP phpinfo() 页面,您应当会看到类似图 3 中的 Memcache 部分。

3. 通过 phpinfo() 查看 Memcache 设置

构建 Memcache 守护程序

   
此过程(表面上有些冗长)还有一个额外的步骤:构建和部署为数据管理 RAM 缓存的 Memcache 守护程序。守护程序依赖于 libevent,因此必须构建和部署该库,然后再编译 memcached:

$ wget http://www.monkey.org/~provos/libevent-1.3b.tar.gz

$ wget http://www.danga.com/memcached/dist/memcached-1.2.1.tar.gz

    接下来,解压缩 tarball 来为每个包生成一个目录:

$ tar xzf memcached-1.2.1.tar.gz

$ tar xzf libevent-1.3b.tar.gz

    要继续执行操作,请依次构建每个包,从库开始。要使所有文件包含在 /opt 中,请在运行配置时使用 --prefix 选项。下面的指令将构建和安装 libevent

清单 4. 编辑 php.ini

$ cd ../libevent-1.3b

$ ./configure --prefix=/opt/lampp

...

$ make

$ sudo make install

...

/usr/bin/install -c .libs/libevent.lai /opt/lampp/lib/libevent.la

/usr/bin/install -c .libs/libevent.a /opt/lampp/lib/libevent.a

chmod 644 /opt/lampp/lib/libevent.a

ranlib /opt/lampp/lib/libevent.a

PATH="$PATH:/sbin" ldconfig -n /opt/lampp/lib

----------------------------------------------------------------------

Libraries have been installed in:

/opt/lampp/lib

接下来的命令将构建和安装 memcached 二进制。

清单 5. 编辑 php.ini

$ cd ../memcached-1.2.1

$ ./configure --prefix=/opt/lampp

...

$ make

$ sudo make install

...

/usr/bin/install -c memcached /opt/lampp/bin/memcached

/usr/bin/install -c memcached-debug /opt/lampp/bin/memcached-debug

    启动 memcached 十分简单:

./memcached -d -m 2048 -l ip-address -p 11211

    -d 选项将把 memcached 作为一个守护程序而不是在最显著的位置中运行。-m number 将把 number 兆字节分配给此过程实例。(在某些系统中,可能会要求您运行多个 memcached 实例以访问可用于进行缓存的所有内存。有关更多信息,请参阅 Memcache 文档)。-l ip-address -p 11211 将使守护程序分别侦听 IP 地址 ip-address 和端口 11211。替换您的 IP 地址。如果为 memcached 选择其他端口,请确保 php.ini 将反映该端口。