Tumblr的PHP 7升级经验分享

Tumblr一直在寻找新途径来提高网站的性能。诸如对于频繁访问则添加缓存、测试新的CDN配置或升级底层软件。最近,经过团队的努力,将全部Web服务器从PHP 5升级到PHP 7。整个升级是一个有趣的过程,并且获得了很酷的结果。

Tumblr是是目前全球最大的轻博客网站,也是轻博客网站的始祖。

这一切开始在2015秋天的HackDay项目。Tumblr已经有运行PHP 7服务器。在那个时候,相当多的PHP扩展还没有支持7版本,但也有非官方的实验支持。无论如何,它还是能运行了!

今年春天,事情开始变得更加稳定,我们决定是时候开始更加紧密升级。安装新版本的软件包,安装过程很简单和一致顺畅。由此将内部的PHP扩展到新的版本,一切都准备好了。

做像这样的升级当然需要测试,以确保代码的行为是相同的,这点非常重要的时候,我们有几个方法:

Phan,使用它来发现与PHP7不兼容的代码,并方便修复。

我们也有一套单元测试和集成测试,有助于在确定什么功能不正常。因为正常的开发过程一直持续着,所以需要确保新代码符合PHP7,所以我们在PHP 5和PHP 7中建立了CI的任务运行所有测试。

结果
新语言带来两个大的改进:性能和语言特点。

当我们把第一批服务器升级PHP 7,我们总是密切注意各种图形,必须确保一切顺利运行。正如我们上面提到的,我们一直寻找性能改进,现在现实的结果是惊人的。几乎立即看到延迟下降一半,服务器的CPU负载降低至少50%。不仅我们的服务器服务的网页快一倍,他们还只使用一半CPU资源。

HP 7还带来了很多有趣的新功能,可以让开发者在Tumblr轻松一点的生活。一些亮点:
1.标量类型提示:PHP历来都是相当差的类型安全,PHP 7引入标量类型的暗示保证值的传递符合特定的类型(字符串、布尔、int、float等)。
2.返回类型声明:现在,PHP 7,函数可以有返回类型,明确的语言将强制执行。这减少了一些样板代码和需要手动检查函数返回值。
3.匿名类:就像匿名函数(关闭),匿名类是在运行时构造,可以模拟类,符合接口甚至延伸其他类。这些在日志类别和单元测试中特别有用。
4.各种安全和性能全面增强。

[该贴被admin于2016-11-11 11:26修改过]