鉴于PHP7的性能有了长足的进步,使用PHP做一些非WEB领域的事情会不会越来越多?

我是一名PHPer, 原先公司的系统有一个根据客户订单动态推荐商品的模块是用PHP实现的,但是PHP5性能一直是个问题,所以跑起来不是太慢就是死机,最后还是用了第三方公司的分析平台(用JAVA重构的话时间不够了).

PHP7出来后相信这类后台的数据分析工作(至少中小规模)也能胜任吧,所以以后基于PHP7的非WEB领域的库会不会越来越多?

阅读 7.6k
5 个回答

现在你们的有一部分业务是偏计算密集型的。我们公司有方案,就是这类偏计算机密集型可以用JAVA或者GO去写,让PHP调用他们的服务。

不要把性能归罪给PHP,系统IO才是瓶颈。

"根据客户订单动态推荐商品的模块"的压力难道不是在数据库SQL查询上吗?怎么可能会是PHP的性能问题?
还有,跑PHP能把服务器跑死机,是不是PHP进程开得太多了?
进程数绝非越多越好,根据内存来划分进程数也是个绝对的错误.
CPU核心就几个,你开再多的进程,只能徒增上下文切换的开销,加重系统负载.
还有,是不是在PHP代码里用了一些curl/file_get_contents之类可能引起较长IO耗时的代码?导致应用太慢?

还有楼主说说你要做的"后台数据分析"到底是什么?方便大家讨论分析,到底是不是PHP真的做不了.

@tablecell 没测试过就不要说一点点好吗?PHP源代码中的 php-src/Zend/bench.php 是一个纯计算类型的测试脚本:

sapi/cli/php ../Zend/bench.php
valgrind --tool=callgrind sapi/cli/php ../Zend/bench.php

PHP7的CPU指令数比PHP5.6减少一半以上,测试耗时从2.115秒减少到0.756秒。在WordPress测试中,PHP7的CPU指令数仅为PHP5.6的1/4!测试耗时从26.756秒减少到10.398秒!

sapi/cgi/php-cgi -T 1000 /var/www/html/bench/wordpress-3.6/index.php > /dev/null
valgrind --tool=callgrind sapi/cgi/php-cgi -T 100 /var/www/html/bench/wordpress-3.6/index.php > /dev/null

这是官方测试的结果:
https://wiki.php.net/phpng
图片描述

bench.php测试显示,从5.4->5.5->5.6,PHP性能一直有小幅提升.
133321_XtyY_561214.png
PHP5.0的bench.php耗时是13秒多,而现在PHP7的耗时仅为不足1秒,说PHP7速度是PHP5.0的13倍,一点都不夸张.

在我的测试中,Xubuntu(i5-3230M)上,简单的time curl WordPress首页测试,PHP7 Beta2比HHVM 3.8.1快32%!PHP7和HHVM均进行了热身,PHP7缓存有opcode,HHVM缓存有bytecode(hhbc即hiphop bytecode).
154304_lP6z_561214.png
在ab并发100的测试中,PHP7跟完全触发JIT的HHVM也是相差无几,PHP7这样的性能提升可真的不是比原来的PHP5高一点点呀, @tablecell 请慎重发言,避免误导PHP开发者呀.如果对测试数据存在质疑,欢迎下载我在Ubuntu上打包的适用于64位的Linux的PHP7 Beta2 with Swoole和HHVM 3.8.1自行测试:
http://my.oschina.net/eechen/blog/411534
除了解压即用的二进制包,里面还有详细的打包步骤.

PHP本来就不慢···所以以前非WEB领域没长足进展应该不是性能问题··

你用PHP写个cli在非ROOT下跑,不超30秒,系统就会自动kill

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏