Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 21239|回复: 6

[教程] php内存优化方法

[复制链接]
发表于 2012-12-13 18:03:59 | 显示全部楼层 |阅读模式
本帖最后由 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:}。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2012-12-21 12:39:19 | 显示全部楼层
本帖最后由 happy13888 于 2013-5-5 23:56 编辑

好帖没人顶是一种遗憾。
回复

使用道具 举报

发表于 2013-1-1 22:12:41 | 显示全部楼层
好东西,正需要,顶一个 ~~~~

今晚一定要把内存优化搞好  ~~
回复

使用道具 举报

发表于 2013-1-16 01:50:02 | 显示全部楼层
顶起来,这个是比较好的东西

回复

使用道具 举报

发表于 2013-2-15 17:03:02 | 显示全部楼层
非常有帮助,谢谢楼主。。。
回复

使用道具 举报

发表于 2013-2-16 07:45:08 | 显示全部楼层
稳定超过一切,尽量不用折腾
看看各个大些的空间商也都是只装基本的就知道了
回复

使用道具 举报

发表于 2013-3-1 15:59:24 来自手机 | 显示全部楼层
看看有时间试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

腾讯云自营「网站建设」全新上线!仅需1元,即可快速体验企业官网、电商网站的海量精美模版

小黑屋|Discuz! 官方站 ( 粤B2-20090059-165 )star

GMT+8, 2021-7-27 19:38

Powered by Discuz! X3.4

Copyright © 2001-2019 Tencent Cloud.

快速回复 返回顶部 返回列表