仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 672|回复: 8
打印 上一主题 下一主题

[学习教程] PHP网站制作之PHP回档phar功能测试

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:12:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
多去关于PHP的网站,尤其有很多经典的文章,多读读这些文章显然是有好处的。PHP自从5.3后新增PHAR回档,Phar回档的观点来自Java?手艺的JAR回档,它同意利用单个文件打包使用程序,这个文件中包括运转使用程序所需的一切器材。该文件分歧于单个可实行文件,后者一般由编程言语天生,好比C,由于该文件实践上是一个回档文件而非编译过的使用程序。因而JAR文件实践上包括构成使用程序的文件,可是思索到平安性,不合错误这些文件举行细心辨别。Phar扩大恰是基于相似的理念,可是在计划时次要针对PHP的Web情况。一样,与JAR回档分歧的是,Phar回档可由PHP自己处置,因而不必要利用分外的工具来创立或利用。Phar扩大对PHP来讲并非一个奇怪的观点。它最后利用PHP编写并被定名为PHP_Archive,然后在2005年被增加到PEAR库。但是在实践中,办理这一成绩的纯PHP办理计划十分迟缓,因而2007年从头编写为纯C言语扩大,同时增加了利用SPL的ArrayAccess工具遍历Phar回档的撑持。自当时起,人们做了大批事情来改良Phar回档的功能,今朝对Phar利用十分无限,而关于Phar的功能测试很少,究竟Phar功能怎样,经由过程一个复杂实行查验下。

测试情况:
PHP:5.5.10
CPU:2GHzintelcorei7
Mem:8GB
体系:Darwin13.1.0

次要测试点:
1:Phar加载速率
1.1:文件巨细几的影响?
1.2:include/require的影响?
1.3:Phar存根(Stub)内容的影响?
2:Phar代码实行速率
2.1全局函数对照
2.2类工具
2.3类办法
为了包管只管包管测试正确,每种体例运转3次,往3次的均匀值。同时作为对照,我们会间接接纳代码体例,取得基准数据。
Phar文件次要包括文件


<p>phar-builder.php用于天生phar文件,实行test命令前,先实行此文件天生phar-test.phar文件。
test_load.php测试加载phar文件速率
src目次内包括文件index.php文件是存根文件,包括dates.php,fZ?http://www.2cto.com/kf/ware/vc/"target="_blank"class="keylink">vci5waHAsZnVuY3Rpb25zLnBocKOsZGF0ZXOy4srUzsS8/sDgt723qKOsZm9yLnBocLLiytS21M/zt723qKOsZnVuY3Rpb25zLnBocLLiytS6r8r9t723qKGjPGJyIC8+vt/M5bi9vP60+sLroaM8YnIgLz612tK7o7pwaGFyvNPU2MvZtsijrLLJ08NpbmNsdWRlus1yZXF1aXJlt73KvbLiytS3os/Wsu7S7LK7tPOjrNa7ssnTw3JlcXVpcmW3vcq9oaM8YnIgLz48L3A+PHByZSBjbGFzcz0="brush:java;">$stime=microtime(true);require"./phar-test.phar";$etime=microtime(true);$total=$etime-$stime;echo"phartotal:".$total."s";[/code]实行后,效力以下
  1. localhost:pharugg$phptest_phar_load.phpphartotal:0.0044760704040527slocalhost:pharugg$phptest_phar_load.phpphartotal:0.0051448345184326slocalhost:pharugg$phptest_phar_load.phpphartotal:0.0043849945068359slocalhost:pharugg$vimtest_phar_load.php
复制代码
均匀加载4.7毫秒

对照间接源代码援用体例。
  1. $stime=microtime(true);require"./src/index.php";$etime=microtime(true);$total=$etime-$stime;echo"srctotal:".$total."s
  2. ";
复制代码
实行后,效力以下
  1. localhost:pharugg$phptest_src_load.phpsrctotal:0.0026230812072754slocalhost:pharugg$phptest_src_load.phpsrctotal:0.0026969909667969slocalhost:pharugg$phptest_src_load.phpsrctotal:0.0025439262390137s
复制代码
均匀加载2.6毫秒
结论:经由过程加载速率对照,phar加载体例比间接文件加载体例慢了很多,几近间接援用文件所耗工夫的两倍。同时我又在phar文件中加载一些搅扰文件,使phar文件变年夜,发明在10k之内,这个load工夫变更不年夜。固然我并没有把新增的文件放到存根内,如许做的目标,关于凌驾10K的目次,文件构造体例好比是autoload体例,而不会经由过程一个文件包括一切的文件。phar加载工夫是src间接加载的1.8倍摆布。

第二:实行速率查验
phar体例,代码以下
  1. $stime=microtime(true);//require"phar://phar-test.phar";require"phar-test.phar";$sstime=microtime(true);for($i=0;$ifor1to10000();$number=number2Chinese("12345");}$eetime=microtime(true);$etime=microtime(true);$total=$etime-$stime;$total2=$eetime-$sstime;echo"pharloadtotal:".$total."s
  2. ";echo"pharexecution10000total:".$total2."s";
复制代码
实行效力以下
  1. localhost:pharugg$phptest_phar_functions.phppharloadtotal:0.0047600269317627spharexecution10000total:0.00017499923706055slocalhost:pharugg$phptest_phar_functions.phppharloadtotal:0.004863977432251spharexecution10000total:0.00017404556274414slocalhost:pharugg$phptest_phar_functions.phppharloadtotal:0.004680871963501spharexecution10000total:0.00016689300537109s
复制代码
实行10000次的类办法,工具实例和工具办法,和函数办法,统共工夫损耗为0.17毫秒。
src实行效力
  1. localhost:pharugg$phptest_src_functions.phppharloadtotal:0.0029089450836182spharexecution10000total:0.00019693374633789slocalhost:pharugg$phptest_src_functions.phppharloadtotal:0.0028579235076904spharexecution10000total:0.0002140998840332slocalhost:pharugg$phptest_src_functions.phppharloadtotal:0.0029168128967285spharexecution10000total:0.00019478797912598s
复制代码
实行10000次的类办法,工具实例和工具办法,和函数办法,统共工夫损耗为0.20毫秒。
小结:经由过程实行速率对照,发明是phar体例,实行速率,要比间接文件include体例,快了(0.20-0.17)/0.20*100=15%,phar体例实行速率快的详细缘故原由没有找到,网上有份材料,apc+include_path设置phar实行速率很快。https://github.com/ralphschindler/test-phar-performance-apc/。

总结:PHP回档phar体例,加载速率要慢于一般文件包括体例,可是实行速率要高于文件包括体例,假如共同include_path设置和APC大概OP体例,优化phar回档的加载速率,就可以提拔php的实行速率。下一步会做方面的实验,1:构建年夜phar文件,实行加载速率,实行速率。2:懂得phar加载道理和实行道理,3:包观点办理和依附。
其他一些参考材料
PHPV5.3中新特征,创立并利用Phar回档。http://www.ckuyun.com/developerworks/cn/opensource/os-php-5.3new4/
test-phar-performance-apchttps://github.com/ralphschindler/test-phar-performance-apc/
你发奋努力,熟悉了安全方面的问题,然后又设计了一些程序,感觉还不错。
若天明 该用户已被删除
沙发
发表于 2015-1-18 22:52:44 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\-\\\\\\\ 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\-\\\\\\\ 的,应该用的是下划线  \\\\\\\_\\\\\\\ ;
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-27 09:36:03 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
谁可相欹 该用户已被删除
地板
发表于 2015-2-5 10:00:44 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
莫相离 该用户已被删除
5#
发表于 2015-2-11 09:00:58 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
小妖女 该用户已被删除
6#
发表于 2015-3-2 07:50:42 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-11 03:14:00 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
乐观 该用户已被删除
8#
发表于 2015-3-17 20:08:14 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
只想知道 该用户已被删除
9#
发表于 2015-3-24 23:34:48 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-1 07:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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