构建 XCache 的基本步骤
在开始之前,首先确保 PHP 正常安装并核实 phpize 是否位于 shell 的 PATH 下。同时,还需要一个 C
编译器,例如 GNU Compiler Collection (GCC),和一组包含 make 和 m4 的开发工具。在 Mac OS X 上,免费的
Xcode 软件开发环境提供了必需的构建工具。
完成以下操作步骤,在 Mac OS X 上构建、部署 XCache 并对其进行性能检测。在其他平台上构建
XCache 与之类似。如果使用 Linux,则其发行版可能已经包含了 XCache 或者已经将其以预先打包好的格式提供给您。
增加 Mac OS X
的共享内存
首先增加 Mac OS X 上留出的共享内存总量。要实现这一目的,需创建(或编辑)文件 /etc/sysctl.conf 并创建如下条目:

清单 1. 增加 Mac OS X 上留出的共享内存总量

kern.sysv.shmmax=33554432

kern.sysv.shmmin=1
kern.sysv.shmmni=32
kern.sysv.shmseg=8

kern.sysv.shmall=8192

这些设置把共享内存总量增加到了 32 MB。如还需进一步扩展共享内存,可以把
kern.sysv.shmall 设定为 kern.sysv.shmmax 除以硬件页面大小。使用 sysctl hw.pagesize
能获得硬件页面大小。例如,假设需要 128 MB 的共享内存,那么设定 kern.sysv.shmmax=134217728 并设定
kern.sysv.shmall=32768。
重启 Mac OS X 使修改生效。重启后,检验新设置是否生效,键入:
sysctl -a |
grep kern.sysv

通过源代码构建 XCache
接下来,通过源代码构建 XCache。从
http://xcache.lighttpd.net 处下载源代码。下载完后解压代码,并转换到 .tar 文件创建的新目录。

清单 2.
通过源代码构建 XCache

$ cd /tmp
$ wget
http://210.51.190.228/pub/XCache/Releases/xcache-1.2.0.tar.gz
$ tar xzf
xcache-1.2.0.tar.gz
$ cd xcache

运行 phpize 为编译 XCache 做准备。

清单
3. 运行 phpize

$ phpize
Configuring for:
PHP Api Version:        
20020918
Zend Module Api No:      20020429
Zend Extension Api No:  
20050606

运行 configure,创建适合于原生操作系统的 makefile。

清单 4. 运行 configure
创建 makefile

$ ./configure --enable-xcache --enable-xcache-coverager

checking build system type... i686-apple-darwin8.8.1
checking host
system type... i686-apple-darwin8.8.1
...
creating libtool

configure: creating ./config.status
config.status: creating config.h

此处,--enable-xcache 选项包含 XCache 支持,--enable-xcache-coverager
选项包含用于测量加速器功效的附加特性。要启用操作码优化,添加 --enable-xcache-optimizer。
当然,下一步将使用 make
命令行构建和安装代码。运行 make,然后作为 root 用户运行 make install 。

清单 5. 利用 make 构建和安装代码

$ make
...
cp ./xcache.so
/Users/strike/tmp/xcache/modules/xcache.so
Build complete.

$ sudo
make install
Installing shared extensions:
/usr/lib/php/extensions/no-debug-non-zts-20020429/

如果上述两项操作顺利完成,那么
XCache 将位于 /usr/lib/php/extensions/no-debug-non-zts-20020429/xcache.so。(路径
/usr/lib/php/extensions/no-debug-non-zts-20020429 反映了正在使用的 API 版本和用于构建 PHP
的编译选项。如果启用了试用的 Zend Thread Safety 特性,则 "no-debug" 应为 "debug","non-zts" 应为
"zts"。)
修改 php.ini 文件
因为安装了扩展,所以必需修改 php.ini 文件,使之包含 XCache
扩展并对其进行配置。打开文件 /private/etc/php.ini,在其中添加如下代码行:

清单 6. 为 XCache 扩展修改
php.ini 文件

[xcache-common]
zend_extension      =
/usr/lib/php/extensions/no-debug-non-zts-20020429/xcache.so

[xcache.admin]
; Change xcache.admin.user to your preferred login
name
xcache.admin.user   = "admin"

; Change xcache.admin.pass to the
MD5 fingerprint of your password
; Use md5 -s "your_secret_password" to find
the fingerprint
xcache.admin.pass   = "0ad72f3f352fcd8acdf266bafd0ac48d"

[xcache]
; Change xcache.size to tune the size of the opcode cache

xcache.size         = 24M
xcache.shm_scheme   = "mmap"

xcache.count        = 2
xcache.slots        = 8K
xcache.ttl         
= 0
xcache.gc_interval  = 0

; Change xcache.var_size to adjust the
size of variable cache
xcache.var_size     = 8M
xcache.var_count    = 1

xcache.var_slots    = 8K
xcache.var_ttl      = 0
xcache.var_maxttl  
= 0
xcache.var_gc_interval =     300
xcache.test         = Off

xcache.readonly_protection = On
xcache.mmap_path    = "/tmp/xcache"

xcache.coredump_directory =   ""
xcache.cacher       = On

xcache.stat         = On
xcache.optimizer    = Off

[xcache.coverager]
xcache.coverager    = On

xcache.coveragedump_directory = ""

注意:为了简明起见,此处省略了一些注释。要了解每个参数的含义,请参阅 XCache 源代码中 xcache.ini 文件设置的例子。

操作码和变量缓存的大小是 32 MB,这是 /etc/rc 留出的最大值。对于 Mac OS X,xcache.mmap_path 必须为文件名。因为
PHP 代码将在 MacBook 上运行,所以 xcache.count 应设为 2,表示 MacBook 中 CPU 的数量。要访问 XCache
统计信息页面,需改变 xcache.admin.pass 设置。运行:
$ md5 -s "password"

此处 password
为您的密码。把输出复制给 xcache.admin.pass。例如,若需将密码设定为 op3nsesam3,可以运行:
$ md5 -s
"op3nsesam3"
MD5 ("op3nsesam3") = cd959ac3debe8f587546a3fa353b3268

然后把 cd959ac3debe8f587546a3fa353b3268 复制给 xcache.admin.pass。
重启 Web
服务器
设置好 XCache 后,重启 Apache Web 服务器。对于大多数系统,可以以 root 用户的身份使用 apachectl
restart 进行重启。
$ sudo apachectl restart
/usr/sbin/apachectl restart:
httpd restarted

创建程序以调用 phpinfo()
检验 XCache 是否已启用,需创建一个小型 PHP 程序用于调用
phpinfo() 并在 Web 浏览器中打开那个文件。这样就能看到类似下图的 XCache 版面。

图 1. phpinfo() 方法给出了
XCache 设置

监控 XCache
要监控 XCache,需安装 XCache 源代码的 admin
目录中的管理页面。把整个 admin 目录复制到 Apache 文档根目录下。通常来说,Mac OS X 中的文档根目录为
/Library/WebServer/Documents。
$ cp -pr admin /Library/WebServer/Documents

复制完成后,使用 sudo apachectl restart 重启 Web 服务器。用浏览器打开
http://localhost/admin,检验管理面板是否工作正常。请参阅类似图 2 的面板。

图 2. XCache
Administration 面板

测试应用程序

选择一个或两个应用程序进行测试。您可以使用自己的代码或者,如果想要更复杂一点,使用大型的 PHP 应用程序,例如 phpMyAdmin 或者
Serendipity。

构建 XCache 的基本步骤的更多相关文章

  1. maven(3)------maven构建web项目详细步骤

    eclipse集成工具,轻松通过maven构建web项目步骤如下: 一, 右键,new -->project, 进入下一页面 二,选择"Maven Project", 点击下 ...

  2. 利用Docker手动构建WebLogic镜像的步骤

    info 我的Docker环境信息如下: [root@localhost ~]# docker info -f " OSType: {{.OperatingSystem}} {{.Archi ...

  3. jekins构建自动化项目的步骤

    填入项目名字 源码管理从git自动拉取代码到工作目录 jenkins拉取代码会到工作空间linux下安装完目录是/var/lib/jenkins/workspace/jeekins-test(可以根据 ...

  4. 基于dubbo源码包通过Maven构建dubbo的详细步骤

    通过Maven构建dubbo 既然可以下载得到源码以及发布包,那么为什么要去构建dubbo呢?,我们先来看下dubbo的主要模块: 我们不仅要使用dubbo的核心框架,还要使用它的一些服务,比如管理控 ...

  5. 手工构建ISO的基本步骤

    1.完成rpm包的构建 登录测试机,ssh 10.xx.xx.xxx cd /home/svn/desktop/trunk/ svn update                            ...

  6. Maven构建跳过测试步骤

    有时候我们不想再执行maven的package或者install命令时每次都执行test,那么可以在pom.xml里的build->pluginManagement->plugins新增如 ...

  7. Hue上的Oozie构建工作流和定时任务步骤

    Oozie是什么? Oozie是一种Java Web应用程序,它运行在Java servlet容器--即Tomcat--中,并使用数据库来存储以下内容: 工作流定义 当前运行的工作流实例,包括实例的状 ...

  8. webpack+vue+vueRouter模块化构建完整项目实例详细步骤-入门篇

    新建项目 开始(确认已经安装node环境和npm包管理工具) 1.新建项目文件名为start_vuedemo 2.npm init -y 初始化项目,我的win7系统,工程在d盘的vue_test_p ...

  9. 自定义Qt构建步骤,添加数据文件(txt,json等)到构建目录

    Qt的qrc资源文件是只读的,因此我们如果要用txt之类的文件存储数据,在程序运行过程中就不能对它们进行修改,也就是不能进行读操作.用"file.open(QIODevice::WriteO ...

随机推荐

  1. MongoDB (八) MongoDB 文档操作

    一. MongoDB 插入文档 insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 语法 insert() 命令的基 ...

  2. 应用内存优化之OnLowMemory&OnTrimMemory

    1.应用内存onLowMemory& onTrimMemory优化 onLowMemory& onTrimMemory简介:OnLowMemory是Android提供的API,在系统内 ...

  3. java jms

    这篇博文我们主要介绍J2EE中的一个重要规范JMS,因为这个规范在企业中的应用十分的广泛,也比较重要,我们主要介绍JMS的基本概念和它的模式,消息的消费以及JMS编程步骤. 基本概念 JMS是java ...

  4. 使用XShell工具密钥认证登录Linux系统

    如果你是一名Linux运维,那么Linux服务器的系统安全问题,可能是你要考虑的,而系统登录方式有两种,密码和密钥.哪一种更加安全呢? 无疑是后者! 这里我为大家分享用Xshell利器使用密钥的方式登 ...

  5. Java学习笔记之:Java 定时任务

    一.介绍 在应用里经常都有用到在后台跑定时任务的需求.比如网络运营商会在每个月的一号对数据进行一次统计.在java中我们可以继承timertask类来实现定时任务. 二.笔记 /** * 定时任务 * ...

  6. Centos环境下部署游戏服务器-软件安装

    这篇文章主要介绍一下游戏服务器需要安装的软件和需要修改的配置.现介绍下项目,本项目服务器端是c++ + mysql组合,客户端是as写的,需要安装的服务为Mysql,Php,Apache, 以及一个n ...

  7. JavaWeb笔记——下载文件

    核心内容是两个头一个流       > 头:Content-Type:你传递给客户端的文件是什么MIME类型,例如:image/pjpeg       * 通过文件名称调用ServletCont ...

  8. MyBatis学习总结_11_MyBatis动态Sql语句

    MyBatis中对数据库的操作,有时要带一些条件,因此动态SQL语句非常有必要,下面就主要来讲讲几个常用的动态SQL语句的语法 MyBatis中用于实现动态SQL的元素主要有: if choose(w ...

  9. RichLabel基于Cocos2dx+Lua v3.x

    RichLabel 简介 RichLabel基于Cocos2dx+Lua v3.x解析字符串方面使用了labelparser,它可以将一定格式的字符串,转换为lua中的表结构扩展标签极其简单,只需添加 ...

  10. hive-0.12升级成hive 0.13.1

    安装了0.12之后,听说0.13.1有许多新的特性,包括永久函数,所以想更新成0.13版的(元数据放在mysql中) 2014年8月5日实验成功 hive0.13.1的新特性 新特性详见 http:/ ...