本帖最后由 html6 于 2013-2-19 13:31 编辑
php优化一直是当前网站发展的趋势,随着网站硬件配置的提高,部分网站开始使用 vps,独立服务器、云主机等,这就能够达到 php优化的条件,下面列出自己收集的关于内存优化方面的软件及方法,针对 php环境的,这些优化偶都有试过,但只能同时开启2项,开启过多会导致程序或环境出现不定因素,所以实践是最好的学习方法,需要的可以下载并使用,软件都是网上收集的开源软件,最新版本需要自己去下载,配置方法也在优化包里面。
内存优化包括:Alternative PHP Cache | eaccelerator | memcache | memcached | redis | wincache | xcache等,针对的程序是 php类的,比方 wordpress,discuzX、phpcms、dedecms、帝国cms、08cms及其它php类开源程序,一般配置大致相同,因为是针对 php软件的,但在程序上会有具体配置和开启方法,以及冲突注意事项等,这就需要具体对待,内存优化是一项技术和环境要求相对较高的项目,有条件的站长还是需要试过这些软件和方法,它们确实能够在现有的硬件上,达到最优的配置和性能,让服务器减轻负担和增大访问速度,特别是对于较大的站点,更能达到节约成本和资源的目的。
下面就具体说一下它们的配置方法:
一、wincache
将 php_wincache.dll复制到 C:\Program Files (x86)\PHP\ext\ 目录下面
修改 php.ini文件,在里面加上
;wincache
extension=php_wincache.dll
重启 iis或 apache
注意事项:wincache 和zendloader冲突,所以二者只能选其一,由于 wincache是内存级优化,速度自然比 zendloader快很多,这个根据具体配置选择。
官方或下载网站:
www.iis.net/download/WinCacheForPhp
www.iis.net/downloads/microsoft/ ... additionalDownloads
www.microsoft.com/web/gallery/install.aspx
http://pecl.php.net/package/WinCache
二、memcache
Windows下的Memcache安装 :
1. 解压附件中的Memcache.rar放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装[此处路径为你的memcached的存放路径]
3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
4.下载php_memcache.dll ,请自己查找对应的php版本的文件
5. 在C:\winnt\php.ini 加入一行 ‘extension=php_memcache.dll’[dll文件夹内有php5.2和php5.3的php_memcache.dll]
6.将对应的dll文件拷贝到php安装目录的ext文件夹内
6.重新启动Apache或iis,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!
C:\memcached\memcached.exe -d install
C:\memcached\memcached.exe -d start
注意事项:可能有的系统,比方 2008 r2安装这个会出现提示找不到 msvcr71.dll这个文件,不必理会,直接安装即可,目前 2003 2008r2 2012偶都试过,能够安装成功并使用。
官方或下载网站:
http://memcached.org
ww.splinedancer.com/memcached-win32
http://downloads.php.net/pierre
http://code.jellycan.com/memcached
三、xcache
首先下载XCache,网址为:
下载地址:http://xcache.lighttpd.net/wiki/Release-1.2.2
需要下载跟你php版本匹配的binaries for Windows。
下载后解压,把php_xcache.dll放在php.ini中指定extension_dir中。
下面开始配置,打开php.ini。
添加(记得是添加,不要更换原来的zend_extension_ts参数)
Zend_extension_ts = "($extension_dir)\php_xcache.dll"
把($extension_dir)替换成绝对路径才行的。
(至于为什么不用extension,而用zend_extension_ts,因为这个发行版的xcache的接口是ZEND_API,直接用extension无法初始化。)
添加
[xcache.admin]
xcache.admin.enable_auth = Off
xcache.admin.user = "UserName"
xcache.admin.pass = "PassWord"
[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 64M
xcache.count = 4
xcache.slots = 64K
xcache.ttl = 1800
xcache.gc_interval = 1800
xcache.var_size = 8M
xcache.var_count = 4
xcache.var_slots = 64K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = Off
xcache.mmap_path = "xcache"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = Off
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coveragedump_directory = ""
添加完上面的配置,然后保存PHP.INI,重新启动IIS,一般就正常了,一下为一些自己可以调整的参数,请看说明 xcache.admin.enable_auth XCache后台是否需要验证(这个后台在刚才下载的XCache的admin目录中,可以自由处理)
xcache.admin.user XCache后台登陆用户名
xcache.admin.pass XCache后台登陆密码
xcache.size XCache的内存缓存大小,普通网站建议设置为64MB,如果是IDC服务器,可以设置成256MB
xcache.count 设置为CPU的数量(双核算2个,比如我的是两个双核Xeon 3.0,就设置为4)
xcache.var_size
xcache.var_count 跟上两条一样
xcache.mmap_path 共享内存标识名,尽量用xcache,避免跟其它软件冲突
xcache.optimizer 优化器,如果没安装Zend可以开启。
一些问题
1、phpinfo()中显示没有加载php_xcache.dll
检查php_xcache.dll的NTFS权限是否正确,需要给网站用户(或者可以用Guests)只读权限。
2、出现php内存错误
使用了extension调用php_xcache.dll,请尝试使用zend_extension_ts。
3、打开网页没有响应,出现错误 Fatal error: [Zend Optimizer] Zend Optimizer *** is incompatible with XCache 1.2.2
这是因为安装了Zend导致,解决方法很简单,把调用php_xcache.dll的zend_extension_ts提到调用zend的前面。如:
zend_extension_manager.optimizer_ts="C:\Program Files\Zend\ZendOptimizer-3.3.0\lib\Optimizer-3.3.0"
zend_extension_ts="C:\php\ext\php_xcache.dll"
zend_extension_ts="C:\Program Files\Zend\ZendOptimizer-3.3.0\lib\ZendExtensionManager.dll"
注意事项:此和 discuz冲突,会造成程序不特定因素。
官方或下载网站:
http://xcache.lighttpd.net
http://xcache.lighttpd.net/wiki/Release-3.0.0
http://xcache.lighttpd.net/wiki/Release-3.0.0#下载
四、eaccelerator
修改;php.ini,然后重启Apache;
在php.ini文件中,加入;
zend_extension="/usr/lib/php/extensions/eaccelerator.so" 注:模块的具体位置;
eaccelerator.shm_size="16" 注:共享内存大小;
eaccelerator.cache_dir="/home/eaccelerator" 注:缓存目录;
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
注:其中,模块的具体位置必须正确,以您的系统为准;共享内存大小可以自己调整,感觉16M还是可以的,根据服务器的情况,你自己调一下。缓存目录可以自己指定,我们在这里指定的是 /home目录上的 eaccelerator 目录,如果没有,自己创建一个;权限是0777;
以上的配置是把 eaccelerator 做为 Zend 的扩展模块来编译的办法。如果您的PHP是用安装模式编译的,要把 zend_extension改为zend_extension_ts 。
如果您是把 eaccelerator 做为 PHP的一个扩展,要用下面的配置 ;
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/home/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
是不是生效了,您要查看 /home/eaccelerator 目录中,当Apache服务器启动了,你随便点几个页面,如果在这个目录中,出现文件了。那就是生效了。如果没任何文件,就要找原因了 ……
这两个配置文件,是不是管用。要你自己根据情况来修改。
# mkdir /home/eaccelerator
# chmod 777 /home/eaccelerator
注:创建缓存目录池,权限是777
编辑本段
验证
等这一切完成后,就要重启Apache服务器,如果没弹出什么错误,大多是正确的。查看一下缓存池,点几个页面,就知道是不是管用了。好像是比较简单。
验证安装是否完成(两种方法)
1、打开命令行窗口,进入PHP安装目录,执行命令php -v,并查看命令结果。
E:\php >php.exe -v
PHP 5.2.10 (cli) (built: Jun 17 2009 16:16:57)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technol
ogies
with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies
则配置正确。
2、创建一个php文件,内容如下:
<?php
phpinfo();
?>
启动PHP并访问该网页,查看其中的Zend Engine部分的信息,应该与上边命令行的结果一样,则配置正确。
注意事项:此和 discuz冲突,会造成程序不特定因素。
官方或下载网站:
http://eaccelerator.net
五、Alternative PHP Cache
解压 php_apc-3.1.10-5.4-vc9-x86.zip 将里面的php_apc.dll 复制到 php 的ext目录下
修改php.ini文件 增加
extension=php_apc.dll
尾部增加
[apc]
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64
apc.optimization = 0
apc.num_files_hint = 1000
apc.ttl = 0
apc.gc_ttl = 3600
apc.cache_by_default = On
apc.slam_defense = 0
apc.file_update_protection = 2
apc.enable_cli = 0
apc.stat=0
注意事项:此和 discuz冲突,会造成程序不特定因素。
官方或下载网站:
http://downloads.php.net/pierre
http://pecl.php.net/package/apc
六、redis
一个是32位的,一个是64位的。根据自己的实情情况选择,我的是32bit,
把这个文件夹复制到其它地方,比如D:\redis 目录下。
打开一个cmd窗口 使用cd命令切换目录到d:\redis 运行 redis-server.exe redis.conf
如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.conf可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:
这时候别启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 出现下图:
这时候,就已经完成配置了,现在说下它的的redis.conf配置文件。
官方或下载网站:
https://github.com/dmajkic/redis/downloads
http://code.google.com/p/servicestack/wiki/RedisWindowsDownload
http://code.google.com/p/servicestack/downloads/list
小结:
以上6种内存优化,最多同时开启2种,开多程序或服务器则出问题。
内存优化包:http://pan.baidu.com/share/link?shareid=266278&uk=2535789224
偶小站网址:http://html6game.com/,如果以上链接失效,请直接到偶网站上下载。另外这些软件因为会更新,需要下载适合自己的,这些可是偶经过2个月实践,用了本地3台机器和2台空间才得出的结果, {:soso_e121:}。
|