新浪云换7指南

新浪云的PHP 7版本运行环境上线了,相对于PHP 5,PHP 7的性能,在官方宣传和实际应用测试中,都有极好的性能表现,大多数的主流应用和框架都有超过1倍的性能提升。

随着新浪云支持PHP 7运行环境,将应用切换到PHP 7版本运行无疑是更好的选择,但是,由于PHP 7的修改十分巨大,因此,有极少部分的代码是不兼容的,需要针对性的进行修改,想比较巨大的性能提升,这些小的修改就变得微不足道了~

目前新浪云的PHP 7极度接近标准PHP 7环境,几乎对原版PHP 7没有任何修改,因此,能在原版PHP 7环境中运行的程序,一定可以在新浪云无缝的运行。

针对PHP 7的修改,官方也提出了迁移指南,通过迁移指南,可以根据实际情况,满足PHP 7的代码编写要求。其中,最终要的,大概有这几项:

  1. mysql系列函数被移除,mysql系列函数(mysql_connect, mysql_query …),在PHP 5.5.0 起已经被标记为废弃状态,并在PHP 7版本中已经移除,官方更加推荐使用mysqli系列函数,或者PDO进行数据库的相关操作,如果您在代码中使用了mysql系列函数,需要将其修改为mysqli,或者使用PDO,以便能在PHP 7环境运行。
  2. $HTTP_RAW_POST_DATA 被移除。同样的,$HTTP_RAW_POST_DATA变量在PHP 5.6.0 中被标记为废弃状态,在PHP 7中已经移除,因此,需要使用 php://input 作为替代。
  3. ereg系列函数(ereg, eregi, ereg_replace …)等也同样被移除了,如果有类似的调用,需要替换为preg相关的函数。
  4. 针对新浪云的服务,原有的SaeCounter,SaeRank已经不再支持,需要使用Redis服务进行替换。

除了上述的一些比较大的修改,还有一些小的变更,可以参考迁移指南,或者,直接切换到PHP 7版本,根据错误日志,找到不符合规范的地方,直接修改就好啦~

最后,放一个针对PHP 7运行环境的性能测试,结果会让你大吃一惊的!

首先说一下测试环境:
在一台机器上,使用ab进行压测,设置连接数为30,测试请求总数为1000,应用为WordPress 4.6.1全新安装版本,换用不同的PHP版本,可以得到下面的结果:
PHP 5.3:

Concurrency Level:      30
Time taken for tests:   21.246 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      11064000 bytes
HTML transferred:       10845000 bytes
Requests per second:    47.07 [#/sec] (mean)
Time per request:       637.381 [ms] (mean)
Time per request:       21.246 [ms] (mean, across all concurrent requests)
Transfer rate:          508.55 [Kbytes/sec] received

PHP 5.6:

Concurrency Level:      30
Time taken for tests:   22.701 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      11064000 bytes
HTML transferred:       10845000 bytes
Requests per second:    44.05 [#/sec] (mean)
Time per request:       681.031 [ms] (mean)
Time per request:       22.701 [ms] (mean, across all concurrent requests)
Transfer rate:          475.96 [Kbytes/sec] received

PHP 7:

Concurrency Level:      30
Time taken for tests:   4.473 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      11064000 bytes
HTML transferred:       10845000 bytes
Requests per second:    223.54 [#/sec] (mean)
Time per request:       134.202 [ms] (mean)
Time per request:       4.473 [ms] (mean, across all concurrent requests)
Transfer rate:          2415.31 [Kbytes/sec] received

可以看到,性能差距巨大,同样的请求数和并发,生成的内容长度也相同,PHP 7的QPS从PHP 5的44.05/sec和47.07/sec,暴涨到223.54/sec,实现了几乎5倍的增长,每个请求的时间也从650ms左右降低到了只有130ms。有如此提升,还不赶紧试试PHP 7的强大威力!