Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] php内存优化方法图文详解 - 中国Discuz!

[复制链接]
ˋAvenGer 发表于 2013-5-23 23:07:32 | 显示全部楼层 |阅读模式
中国discuz! http://chndz.net

     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复制到 Crogram Files (x86)PHPext 目录下面
  

  修改 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:memcachedmemcached.exe -d install’ 安装[此处路径为你的memcached的存放路径]
本帖隐藏的内容3. 再输入: ‘c:memcachedmemcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
  4.下载php_memcache.dll ,请自己查找对应的php版本的文件
  5. 在C:winntphp.ini 加入一行 ‘extension=php_memcache.dll’[dll文件夹内有php5.2和php5.3的php_memcache.dll]
  6.将对应的dll文件拷贝到php安装目录的ext文件夹内
  6.重新启动Apache或iis,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!
  

  C:memcachedmemcached.exe -d install
  C:memcachedmemcached.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 = "assWord"
  [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="Crogram Files32end32endOptimizer-3.3.0libOptimizer-3.3.0"
      zend_extension_ts="C:phpextphp_xcache.dll"
      zend_extension_ts="Crogram Files32end32endOptimizer-3.3.0lib32endExtensionManager.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文件,内容如下:
        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:edis 目录下。
  打开一个cmd窗口  使用cd命令切换目录到d:edis  运行 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=501290&uk=2535789224







      文章分享自: 中国Discuz! - http://chndz.net - 转载请保留
  


cooltanghui 发表于 2013-5-24 08:30:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

可爱的轩轩 发表于 2013-5-24 10:58:46 | 显示全部楼层
发现VPS没虚拟空间好用
回复

使用道具 举报

 楼主| ˋAvenGer 发表于 2013-5-24 11:50:38 | 显示全部楼层
可爱的轩轩 发表于 2013-5-24 10:58
发现VPS没虚拟空间好用

你赢了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-9-22 16:46 , Processed in 0.113805 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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