描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121309380
1 搭建环境 1
搭建Windows环境 2
搭建Debian或Ubuntu环境 5
Debian 5
Ubuntu 6
搭建CentOS环境 10
安装Nginx 10
安装PHP 7 11
安装Percona Server 14
搭建Vagrant环境 15
本章小结 17
2 PHP 7新特性 18
OOP特性 18
类型声明 19
命名空间与use关键字批量声明 23
匿名类 29
不推荐使用老式的构造方法 33
Throwable接口 34
新的操作符 36
太空飞船操作符(<=>) 36
null合并运算符(??) 39
统一变量语法 40
其他特性和变更 42
常量数组 42
Switch中的多个default默认值 42
Session_start函数中的选项数组 42
Unserialize函数引入过滤器 43
本章小结 43
3 PHP 7应用性能提升 44
Nginx与Apache 44
Apache 44
Nginx 45
HTTP Server优化 45
缓存静态文件 46
HTTP持久链接 47
Apache 48
Nginx 49
GZIP压缩 49
PHP独立部署服务 52
关闭不用的模块 52
Web服务器资源 54
内容分发网络(CDN) 55
使用CDN 56
CSS与JavaScript优化 57
合并 58
缩小 58
全页缓存 67
Varnish 67
基础设施 70
Web服务器 71
数据库服务器 72
负载均衡(LB) 72
HAProxy负载均衡 73
本章小结 77
4 提升数据库性能 78
MySQL数据库 78
查询缓存(Query Caching) 79
存储引擎 80
MyISAM存储引擎 81
InnoDB存储引擎 81
Percona Server – MySQL的fork 83
安装Percona服务器 83
MySQL性能监控工具 84
phpMyAdmin 84
MySQL工作台 87
Percona工具箱 88
Percona XtraDB 集群(PXC) 91
Redis 键值缓存存储 94
连接Redis服务器 96
用Redis保存和获取数据 97
Redis管理工具 98
Memcached键值缓存存储 100
本章小结 101
5 调试和分析 102
Xdebug 102
使用Sublime Text调试 103
使用Eclipse调试 108
使用Xdebug分析 111
PHP DebugBar 113
本章小结 117
6 PHP应用的压力/负载测试 118
Apache JMeter 118
ApacheBench (ab) 125
Siege 127
真实世界中应用程序的压力测试 129
Magento 2 130
WordPress 4 131
Drupal 8 131
本章小结 133
7 PHP编程实践 134
代码风格 134
测试驱动开发(TDD) 138
设计模式 141
面向服务的体系架构(SOA) 142
保持面向对象和可重用 143
PHP 框架 143
版本控制系统(VCS)和Git 143
部署和持续集成(CI) 144
本章小结 145
A 提升工作效率的工具 147
Composer ?C PHP依赖管理工具 147
安装Composer 147
使用Composer 148
Git ?C 一个版本控制系统 150
安装Git 150
使用Git 150
创建新分支和合并 152
克隆一个仓库 153
Webhooks 154
管理仓库的桌面工具 155
Grunt watch 157
小结 160
B MVC和框架 161
MVC设计模式 161
Model 162
Views 162
Controllers 163
Laravel 163
安装 163
特性 164
Eloquent ORM 166
Artisan命令行 169
迁移 170
Blade模版 172
其他特性 175
Lumen 175
Apigility 175
小结 181
序言
近些年来,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差异很小。这个版本从性能上相对于从前的历史版本具有非常大的进步。
我从本科二年级开始,就使用PHP开发一些项目,那时PHP 5才刚刚在国内被运用起来。记得那时使用PHP开发项目,由于没有遇到高并发大流量的场景,所以也算得心应手。直到毕业后在新浪平台架构部工作时,因为开发一些平台项目会遇到被多个项目调用的情况,所以PHP性能低下的问题便被突显出来。从那时开始,我在做基本开发工作的同时,也会关注代码质量与运行性能。当时PHP的优化手段更多的是通过优化自身代码来尽量避免糟糕代码的出现。后来在百度工作期间,我们的一个模块在一天内会被请求20亿次(现在也许更高),因为移动业务发展迅猛,流量涨得很快,PHP项目的性能缺陷愈加被放大,所以那时便开始使用一些工具(例如xhprof)去细化问题,在优化代码、调整架构的同时,关注上下游性能、网络开销等PHP项目周边的调整。虽然通过各种努力能够在当时正常承载线上业务,但性能低下问题依然是一个很大的困扰。
在我入职链家网的前后,PHP社区预发布了的PHP 7版本。在PHP 7正式发布后,链家网的PHP工程师们考虑到有鸟哥坐镇链家网,于是在时间升级了线上PHP 7环境,在不用做太多框架和代码调整的情况下,大幅降低了整体的线上机器负载。PHP 7版本在性能方面的调整,让传统PHP Web项目能够轻松获得整体的性能提升。记得鸟哥分享过不少能够实现负载减轻一半以上的公司案例,相信随着越来越多的公司、用户使用PHP 7,这样的案例会越来越多。随着PHP开发人员的不断努力,PHP工程师会更专注业务场景而不必再多操心性能问题。
本次与博文视点合作,我们有着共同的目标——将PHP 7的新特性、运用方法更快地传递给中国的PHP工程师们。因此特在博文视点张春雨先生的邀请下,决定尽快用工作之余的时间将本书翻译完成并推广上市。由于我的个人精力实在有限,因此邀请了链家网同事祁冰、左晓杰与我一同翻译此书,本书的第4、5、6章由祁冰翻译,第7章及附录由左晓杰翻译,其余部分由我翻译。若是让读者在阅读时感到口吻不一致,还望包涵。
本书作者在PHP 7发布的时间撰写了此书,内容包括环境搭建、软件安装、PHP 7新特性、PHP与数据优化、性能测试等多个方面,并且也提到了PHP实践,以及一些工具、框架的使用,非常适合有一定PHP基础的工程师们阅读。即便你不是PHP工程师,只要有一定的计算机基础,相信你也能够通过认真阅读此书并加以实践来掌握PHP开发与优化技术,获得PHP 7相关的技术理解。全书通俗易懂且图文并茂,实践案例丰富,相信一定能够吸引读者阅读。同时,本书目标清晰,全书都在围绕如何使用PHP及周边技术来优化性能、缩短用户等待时间这一主题。如果你的业务场景对程序性能、等待时间有一定要求,那么千万不要错过此书。
再次感谢祁冰、左晓杰在本书翻译过程中付出的努力!因为我们一同充任链家网的技术支撑角色,非常了解彼此的甘苦。链家网发展迅速,技术需求不断,大家日常工作量都很饱和,基本都是深夜或假期时抽空翻译,这份对技术分享的热情实属难得!同时,我必须感谢我的家人给予的支持、鼓励,特别感谢我的爱人,因为她的更多承担才让我有时间和精力完成此事。当然,如原著作者所说,我们都应该感谢PHP社区开发人员做出的努力,他们为PHP工程师们提供了更好的开发语言,在解决了我们痛点的同时还为未来提供了更多的可能!谢谢!
吕毅
链家网平台架
评论
还没有评论。