php zend_opcache 功能开启和效果

  • 3
  • 1,236 views
  • A+
所属分类:应用运维

大家知道目前PHP的缓存插件一般有三个:APCeAcceleratorXCache,但未来它们可能都会消失,因为PHP 5.5已经集成Zend Opcache,功能和前三者相似但又有少许不同,缓存速度据说比它们更快(注意:只是据说,我没测试过)。

这几个PHP加速插件的主要原理都相同,就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降 低服务器负载,它们的效率是显而易见的,像drupal这种庞大的CMS,每次打开一个页面要调用数十个PHP文件,执行数万行代码,效率可想而知,在安 装APC等加速器后打开页面的速度明显加快。

Zend Opcache 已经集成在了PHP 5.5里面,编译安装PHP5.5的时候加上--enable-opcache就行了。但也支持低版本的 PHP 5.2.*, 5.3.*, 5.4.*,未来会取消对5.2的支持,下面是我在PHP 5.4下的安装方法:

编译时就enable opcache

[opcache]

zend_extension = "D:\phpecorg\PHP\ext\php_opcache.dll"

//或 linux下:zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20100525/opcache.so

opcache.enable = 1

opcache.enable_cli = 1

opcache.memory_consumption = 256

opcache.interned_strings_buffer = 8

opcache.max_accelerated_files = 4096

opcache.max_wasted_percentage = 5

opcache.validate_timestamps = 1

opcache.revalidate_freq = 60

opcache.fast_shutdown = 1

opcache.optimization_level = 0xffffffff

128意思是给它分配128M内存,然后重启apache,用phpinfo查看是否生效,显示下面的信息就说明生效了

php zend_opcache 功能开启和效果

在phpinfo页面的下面可以看到的运行状态

php zend_opcache 功能开启和效果

如果嫌这个不直观可以装个PHP文件查看,地址在https://gist.github.com/ck-on/4959032,把上面的代码保存为一个php文件放到你的网站目录下面打开就可以看到:
或者从这里复制吧

 

php zend_opcache 功能开启和效果

命中率100%。

Zend Opcache因为最近才出来,现在还是测试版,相信在未来几年会越来越流行,现在真没多少人用。目前测试来看还比较稳定,我已经在 vbulletin论坛下运行了几天,不过没看出和APC、xcache有啥区别,只是最近我的APC老让apache崩溃(可能是apache和php版本太新的原因),想换个试试,毕竟Zend Opcache和APC都是php官方的,值得信赖。

 

重新启动apache, 打印phpinfo();信息后, 即可找到Zend OPcache信息. 如图片

在phpinfo()信息中, 目前来看有两条信息犹为重要:

Cache hits (高级缓存命中)
Cache misses (高级缓存未命中)

在这两条信息中即可观察缓存运行情况, 一目了然
高速缓存带来哪些优化呢? 对代码运行有多大帮助?

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

< ?php
echo ‘opcache';
?>

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

< ?php
echo ‘cache new';
?>

再刷新demo.php, 应该可以看到效果, 打印出来的值仍然是opcache, 即源码被缓存了, 它不再解析demo.php文件, 试着不停地刷新, 检测多少秒后才更新.
可设置: opcache.force_restart_timeout=180 的时间来控制更新速度.

这 就类似于web项目中的静态文件缓存一下, 比如我们加载一个网页, 浏览器会自动帮我们把jpg, css缓存起来, 唯独php没有缓存, 每次均需要open文件, 解析代码, 执行代码这一过程, 而opcache即可解决这个问题, 代码会被高速缓存起来, 提升访问速度.

历史上的今天:

weinxin
我的微信公众号
我的微信公众号扫一扫

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

目前评论:3   其中:访客  3   博主  0

    • avatarvet Chichester:来自天朝的朋友 谷歌浏览器 Ubuntu Linux 0

      I tend not to write a comment, but aftyer looking at thdough a few off the responses here php zend_opcache 功能开启和效果–应用运维 | 岂止博客.
      I actually do have 2 questions for you if you do not mind.

      Could it be only me or do a few of the remarks come across
      like they are written by brain dead visitors? :-P And, if you are writing on additional sites, I would like
      to keep up with you. Could you list of every one of your social sites like your twitter feed, Facebook page or linkedin profile?

      • avatarexcel training london:South Africa Safari浏览器 Mac OS X 10_11_5 0

        I think that what you published was actually very logical.
        But, what about this? what if you were to write a awesome post title?
        I ain’t saying your content is not good., but what if you added something to maybe get a person’s
        attention? I mean php zend_opcache 功能开启和效果–应用运维 | 岂止博客 is a little plain. You could look at Yahoo’s front page
        and note how they create news titles to get people to click.
        You might try adding a video or a pic or two to get readers interested about everything’ve written. In my opinion, it
        could bring your posts a little livelier.

        • avatarsbobet:Viet Nam Opera浏览器 Windows 8 0

          I believe everything published made a lot of sense.
          But, what about this? suppose you typed a catchier title?
          I ain’t saying your information is not solid, but suppose you added a title
          to possibly get a person’s attention? I mean php zend_opcache
          功能开启和效果–应用运维 | 岂止博客 is kinda plain. You might look at Yahoo’s home page and see how they create article headlines to
          get viewers to open the links. You might add a
          related video or a related pic or two to get readers
          excited about everything’ve written. In my opinion, it could bring your
          blog a little bit more interesting.