《高性能PHP 7》从PHP所需环境讲起,涉及环境搭建与配置设置等内容,能够帮助有一定计算机基础的读者实现PHP运行环境的搭建及PHP周边软件的安装配置。《高性能PHP 7》亮点内容是介绍PHP 7特性的部分,同时也告诉读者哪些语法将会被废弃,对读者上手PHP 7有极大的帮助。除介绍PHP 7的新特性外,《高性能PHP 7》用大量章节介绍如何使用PHP 7及周边软件来构造高性能的Web应用程序,同时介绍了一些PHP开发的最佳实践,帮助读者更好地理解Web项目与PHP应用程序开发。附录部分为读者介绍了一些不错的工具,讲解了MVC与开发框架等周边知识,能够帮助读者更好地开发PHP项目。
近些年来,PHP社区始终面临一个巨大问题:性能。在性能问题上,无论使用多么强悍的机器,PHP都会存在一定的瓶颈。在PHP 5.4、PHP 5.5、PHP 5.6版本中,性能开始有所提升,但在高并发的场景下PHP依然会暴露出性能低下的问题。PHP社区开发了一些像Alternative PHP Cache(APC)、Zend OpCache这样的缓存工具,希望借此缓存opcode以达到更高性能,这个做法的确在一些场景下起到了作用。
为了解决PHP的性能问题,Facebook开发并开源了他们的内部项目HipHop Virtual Machine(HHVM)。如HHVM官网介绍,它通过使用即时编译(JIT)在保持了灵活开发的同时显著提升了PHP性能。HHVM相比于PHP有很大的性能提升,从而被广泛应用到如Magento这样的生产环境中。
PHP曾希望通过PHP Next Generation(PHPNG)来与HHVM抗衡,PHPNG项目主要通过重写和优化Zend引擎内存管理以及PHP数据格式来提升性能,这也成为PHPNG的核心目标。全球的工程师都开始积极对比PHPNG与HHVM,并且结果表明,PHPNG性能优于HHVM。
最后,在PHP主干中融入了PHPNG以及一系列的优化与重写后,PHP 7正式发布并带来了重大的性能提升。PHP 7依然没有采用JIT方案,但其性能绝佳,与使用JIT技术的HHVM差异很小。这个版本从性能上相对于从前的历史版本具有非常大的进步。
本书内容
第1章,搭建环境。介绍如何搭建不同的开发环境,其中包括Nginx、PHP 7、运行在Windows上的Percona Server、多种的Linux发行版,以及安装Vagrant虚拟机。
第2章,PHP 7的新特性。介绍众多PHP 7中引入的新特性,例如类型提示、使用use集体声明、匿名类、统一的变量语法、新的操作符。新的操作符有组合比较符、Null合并运算符等。
第3章,PHP 7应用性能提升。介绍如何用不同的技术提升和扩展PHP 7应用的性能。在这章,我们采用合并与精简内容、全页缓存、安装并配置Varnish等手段来优化Nginx和Apache、CDN、CSS、JavaScript。最后,介绍了一个巧妙的方法构建应用开发环境。
第4章,提升数据库性能。内容包括如何优化MySQL性能以及如何配置出高性能的Percona Server,同时也会介绍多种用来监控数据库性能的工具。数据库部分的内容包含了如何优化Memcached与Redis缓存数据。
第5章,调试和分析。介绍如何定位与分析性能问题,包括如何使用Xdebug、Sublime Text3、Eclipse、PHP DebugBar定位性能问题并分析性能数据。
第6章,PHP应用的压力/负载测试。介绍如何使用不同工具进行压力、负载测试。其中包括Apache JMeter、ApacheBench和Siege测试负载情况,并会以一些开源PHP项目(Magento、Drupal、Wordpress)为例,分别在PHP 7与PHP 5.6的环境中进行负载测试并加以对比。
第7章,PHP编程最佳实践。介绍一个生产高质量编码的最佳实践案例。包含了编码规范、设计模式、面向服务架构、测试驱动开发、Git和部署等。
附录A,提升开发效率的工具。介绍Composer、Git和Grunt watch这三个工具的更多细节。
附录B,MVC和框架。介绍MVC设计模式与一些最为流行的PHP开发框架,例如Laravel、Lumen、Apigility。
阅读准备
本书将涉及下面这些软件,你需要有一台能够兼容它们最新版本的设备。
操作系统:Debian或Ubuntu。
软件:Nginx、PHP 7、MySQL、PerconaDB、Redis、Memcached、Xdebug、Apache JMeter、ApacheBench、Siege和Git。
目标读者
本书适合具有一定PHP编程基础的人。如果你更加关注应用性能,那么这本书将非常适合你!
排版约定
在本书中,根据内容的不同将采用各种不同的文字风格。下面举例介绍它们的样式与含义。
文本代码、数据库表名、文件夹名、文件名、文件后缀、路径名、伪URL地址、用户输入以及Twitter路径,会以下列方式展示给读者:“我们可以通过include关键字来表示包含其他的内容。”
代码块将会以如下形式显示。
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME complete_path_webroot_
folder$fastcgi_script_name;
include fastcgi_params;
}
当需要读者注意代码中的某些部分时,对应的关键信息将加粗表示。
server {
...
...
root html;
index index.php index.html index.htm;
...
所有命令行的输入与输出都会显示如下。
php-cgi –b 127.0.0.1:9000
新术语和重点词会加粗显示。例如菜单栏和对话框中的文本,会以下面的形式显示:“点击Next按钮进入下一个窗口。”
读者反馈
读者反馈是非常珍贵的内容,我们一直关注并且欢迎。请让我们知道你是否喜欢本书,我们期望得到反馈,你的反馈能够促使我们进步。
反馈方式:向faq@phei.com.cn发送邮件,注明书名与你的反馈内容。
如果你在某个领域有一定的经验并对写书感兴趣,那么请关注我们官网上的作者指南http://www.broadview.com.cn/support/4。
代码下载
你可以下载所有已购买的博文视点书籍的相关资源,链接为http://www.broadview. com.cn/30938。
勘误提交
虽然我们已经很谨慎地来保证书籍内容的准确性,但错误仍然可能存在。如果你在某本书中发现错误——无论是正文还是代码中的错误——请告诉我们,我们都将不胜感激。这样,你不仅帮助了其他读者,也帮助我们改进了后续版本。如果发现任何勘误,可以在博文视点网站相应图书的页面提交勘误信息。一旦你找到的错误被证实,提交的信息就会被接受,我们的网站上也会发布这些勘误信息。你可以随时浏览图书页面,查看已发布的勘误信息。
namespace 中的 / 应为 \
第三段代码
declare( strict_type=1 );
应改为declare( strict_types=1 );
“进场”改为“进程”
wordker_connections
改为worker_connections
加载
css
和js
的代码写反了