飞龙再生

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  由于php是解释型语言,所以每次执行同一个脚本,都会发生一次解释的过程,对于大访问量的网站来说,会影响很大。通过使用opcache能够缓存opcode,将第一次解释的代码生成opcode,那下一次请求访问的就是已经解释好的代码,这样能大大加快访问效率。

  在php5.5之前是没有自带的opcache软件,需要手动安装这些软件,一般可以使用apc,eAccelerator等,也可以使用opcache(这个基本原理和apc大致相同,在它的基础上更优化,更推荐使用)。

  apc :安装好并在php.ini文件中设置

      [apc]

      extension = apc.so

      apc.stat = Off ;指定代码要手工更新缓存
      apc.enable_cli = Off

  然后,在代码变更的时候,就要手动调用apc_clear_cache ()函数来清除代码缓存。

  在php5.5以上系统自带了opcache,就不用再安装其他opcache插件了,只要设置好opcache的配置即可,这个更方便。

  Zend Opcache 已经集成在了PHP 5.5里面,编译安装PHP5.5的时候加上–enable-opcache就行了,这样自动会有opcache.so

以下为 安装扩展实例:
但也支持低版本的 PHP 5.2.*, 5.3.*, 5.4.*,未来会取消对5.2的支持,下面是我在PHP 5.4下的安装方法:
依次执行下面的命令
wget http://pecl.php.net/get/zendopcache-7.0.2.tgz
tar xzf zendopcache-7.0.2.tgz
cd zendopcache-7.0.2
/usr/local/php/bin/phpize
如果找不到phpize 的话自己找PHP路径,我的在/usr/local/php/bin/phpize,下面这行也要按你的php.ini路径自行修改
./configure –with-php-config=/usr/local/php/bin/php-config
make
make install

打开php.ini 在最下面添加如下几行

一个Opcache的推荐配置:

  zend_extension=opcache.so

  opcache.enable_cli=1  

  opcache.memory_consumption=128 //共享内存大小, 这个根据你们的需求可调

  opcache.interned_strings_buffer=8 //interned string的内存大小, 也可调

  opcache.max_accelerated_files=4000 //最大缓存的文件数目

  opcache.revalidate_freq=60 //60s检查一次文件更新

  opcache.fast_shutdown=1 //打开快速关闭, 打开这个在PHP Request Shutdown的时后, 会收内存的速度会提高

  opcache.save_comments=0 //不保存文件/函数的注释

用phpinfo查看是否生效,显示下面的信息就说明生效了

with Zend OPcache v7.0.2, Copyright (c) 1999-2013, by Zend Technologies
或 Zend OPcache

我们做个测试, 验证一下什么是opcache.

echo ‘hellow opcache’;

这是一段非常简单的php代码, 请保存为a.php文件然后访问, 随意刷新, Cache hits数值会不停地增加, 说明起作用了,
然后你修改代码为:

echo ‘hellow opcache new’;

再刷新a.php, 应该可以看到效果, 打印出来的值仍然是hellow opcache, 即源码被缓存了, 它不再解析a.php文件, 试着不停地刷新, 检测多少秒后才会输出 hellow opcache new.

如果要手动立即刷新缓存,调用函数opcache_reset()函数重置所有opcache缓存字节码,或者使用opcache_invalidate(PHPfileDir,true)重置指定php文件的缓存字节码。

posted on 2015-09-14 18:23  飞龙再生  阅读(749)  评论(0)    收藏  举报