月度归档:2014年06月

opcache PHP新的字节码缓存扩展

字节码缓存组件 Zend Optimizer+ 现在更改名字为 Zend opcache了。且在php 5.5版本后,会集成到php的官方组件中,也就没有必要安装其他的APC,eAccelerator等了。。

APC与Opcache都是字节码缓存也就是,PHP在被编译的时候,首先会把php代码转换为字节码,字节码然后被执行。

php文件第二次执行时,同样还是会重新转换为字节码,但是很多时候,文件内容几乎是一样的,比如静态HTML文件,生成后内容许久都不会改变,用户访问请求直接由服务器读取响应给客户端浏览器。都不用经过PHP进行解析构建了。

内存中的字节码数据,可以直接缓存进行二次编译。这样程序就会快一些,cpu的消耗也少了。

详细介绍看这两篇

新一代 PHP 加速插件 Zend Opcache

php的 zend opcache VS apc 性能比较

我主要是用来测试了一下phpcmsV9.5.4 的默认index.php主页,没有数据内容,但有sql查询操作

测试是Apache2.2.6 32Bit 服务器,PHP 5.4.26 ts,mysql 5.6.16 64Bit

ab 版本 This is ApacheBench, Version 2.3 <$Revision: 655654 $>

请求数:1000

并发数:10

没有加载opcache测试

第一次测试

p

吞吐率 38.46 rps,耗时26.001 s,每个请求耗时260.015 ms

第二次测试

p2

吞吐率有所提高 40.73 rps,耗时 24.554 s,每个请求耗时245.544 ms

加载opcache进行测试

opcache版本 php_opcache-7.0.3-5.4-ts-vc9-x86

opcache配置信息


opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

第一次配置opcache好后 cache 状态

cstat

 

cache hits 命中数 1

cache misses 未命中数 1

使用内存225.2Kb

opcache第一次测试

p_c1

吞吐率提升到49.11rps,总耗时20.361 s,每个请求耗时下降到203.612 ms

在phpinfo中可查看opcache的命中数量情况

cstat_c

命中数量已达到43957,内存使用2.31Mb。

opcache第二次测试

p_c2

吞吐率提升到47.87rps,总耗时20.888 s,每个请求耗时下降到208.882 ms

opcache之后的两次压测数据变化不大,每个请求耗时在1ms差距内,吞吐率也在1~2 rps

但与之前未启用opcache时,总耗时少了4 ~ 6 s,每个请求耗时少了40 ~ 60 ms。吞吐率也提升了 8%。

这都是在一行代码未改的情况下有效性能提升。

 

php文件被编译为字节码进行内存缓存,如果在生成环境中,代码和内容变量都是比较固定的

缓存起来的内容就可以高速的返回,用户会得到较快的响应。

但是在本地开发是,建议不要开启opcache,否则就得不到最新的值

例如:


<?php
 header('Content-type:text/html; charset=utf-8');
 
 $str = 'abc';
 echo $str; // 输出abc
?>

赋予$str 一个新的值



<?php
 header('Content-type:text/html; charset=utf-8');
 
 $str = 'new abc';
 echo $str; // 输出的还是 abc
?>

这是因为$str 已经被编译为字节码了,再次访问时,内存里面还是可以找到对应的缓存,就没有进行重新编译,返回的值也就还是之前的值 abc

不过,opcache有一个参数可以用来设置缓存时间长度

[bash]

opcache.force_restart_timeout (default "180")

[/bash]

默认时间为180秒,还是建议本地不用开启opcache

 

注意:官方给了一个Note,如果opcache要与xdebug同时加载,那么opcache需要在xdebug之前进行加载。

但是我本地测试了一下,xdebug先加载,再加载opcache,也正常启动了,xdebug,opcache都加载成功,opcache缓存也正常。

不过还是按照官方的建议来安装加载,否则可能会出现奇怪的错误吧。

 

官方Github https://github.com/zendtech/ZendOptimizerPlus

 

PHP opcache pecl http://pecl.php.net/package/ZendOpcache

Window opcache dll扩展 http://windows.php.net/downloads/pecl/releases/opcache/7.0.3/

戴尔N4010笔记本风扇清灰

女朋友已经跟我说过很多次了,要帮她把笔记本清清灰尘。我一直懒得动工,且跟她强调清灰不能解决电脑根本慢的问题啊(好吧本质就是太懒了)。她的电脑是10年买的戴尔N4010,买回来也很久没有重装了,于是重装了一下系统,又给电脑加了一根三星4G DDR3的内存条,整体内存升级到6G了。感觉没有那么慢了。最近夏天来了,她用着电脑觉得一会儿就又烫又卡了。所以再次强烈要求(下命令)我帮她的机器清理灰尘。

这下挡不住了,只好开始动工。动手能力一般般,找了一篇拆机文章,http://wenku.baidu.com/view/7eb16fa9d1f34693daef3e67.html?re=view

上面的这篇教程说明的是拆机,不过我们是清理灰尘,主要看拆主板那一块就可以了。至于其他的屏幕拆解,主板拆卸等,感兴趣的可以自己去研究。

 

对于拆机或清灰我觉得有几点需要注意的

1、机器上面的螺丝要分类存放,不要丢失了

2、注意外接设备与主板连接的排线,比如键盘,屏幕等

3、擦拭灰尘时千万别把主板上面的电容给抹坏了,否则就麻烦了

还有一点那就是,记得步骤,不要忘记拧螺丝或者忘记插排线了。

好了,我这次的清灰比较简单,目标就是出风口风扇那里清理干净就好。至于主板的扇热铜管,还有cpu的硅脂替换等,没有处理。

 

在拆机前要搞清楚笔记本的常说的ABCD壳(面)

abcd图上面就一目了然了。

戴尔的这款笔记本主要是把D壳的螺丝全部卸掉,然后在撬开键盘打开C壳。就能看到主板了。

(图片比较烂,勉强看看吧)

第一步卸掉D壳的所有螺丝,包括电池仓那里。

在卸掉内存后盖的螺丝后,取下内存,后盖有一颗螺丝卸掉后就可以拿出光驱了,这里都比较简单。

22

 

需要注意的是,D壳上面的螺丝不要忘记了光驱那里的4颗螺丝!

第二步开始取下键盘

要注意键盘的4个角落下面的卡槽

20140609_220207

左上角的那个就在ESC键上面,小心一点撬以免划伤键盘和C壳。

在慢慢撬起键盘后,小心低下的排线,不要扯掉了。

第三步拆排线

主要有三个地方

2

 

排线拆掉后,拿下这个黑黑的一层隔板,就能看到主板了。

第四步

可以看到风扇了

33

卸掉风扇的螺丝,拿下风扇,清理出风口和风扇。出风口那里全是黑色海绵状的东西,图片忘记拍了,出风口完全被堵住了。可以看到主板上面也是一层的灰,我是用吹风机吹了一遍,没有用刷子刷。如果有机油的话可以给风扇的轴上点油。

至此我的目标就算达成了,开始一步步的安装回去。

4

 

拆解到风扇的全部螺丝。

安装回去的过程中,不要漏掉排线和螺丝。我就忘记了光驱的螺丝直接把光驱装上了。

在上D壳螺丝时,不要一下子全部拧上了,我是拧上4个角上的螺丝。启动一下电脑试试,如果正常启动了,测试一下键盘,看看风扇的运转情况,再关机,把余下的螺丝都拧紧。如果不能正常启动,检查一下内存条是否安装正确,或者检查一下主板上的线是否脱落了。