新書推薦:
《
笼中王国 : 18世纪法国的珍禽异兽与社会文化
》
售價:NT$
340.0
《
思考的框架3 巴菲特芒格马斯克推崇的思维方式 风靡华尔街的思维训练法 沙恩·帕里什 著
》
售價:NT$
295.0
《
森林疗法:拥抱大自然、获得幸福的季节性方法
》
售價:NT$
340.0
《
希腊人(伊恩·莫里斯文明史系列)
》
售價:NT$
845.0
《
亚马逊六页纸 如何高效开会、写作、完成工作
》
售價:NT$
349.0
《
世界巨变:严复的角色(王中江著作系列)
》
售價:NT$
500.0
《
塔西佗(全二册)(二十世纪人文译丛)
》
售價:NT$
1800.0
《
(棱镜精装人文译丛)思想的假死
》
售價:NT$
290.0
|
編輯推薦: |
本书通俗易懂且图文并茂,实践案例丰富,相信一定能吸引大家阅读。全书目标清晰,始终围绕着如何使用PHP及周边技术来优化性能这一主题,能够为许多工程师解决实际问题。
|
內容簡介: |
PHP是一种伟大的构建Web App的通用开源脚本语言。PHP 7是*版本。主要突破了向后兼容性的问题,致力于高性能和高速度。本书将会高节奏地向你介绍PHP7,来提高你的编码速度及技巧,书中所涉及的概念将指导你作为一名PHP程序员不断提高你App的性能标准。我们将向你介绍PHP 7 的新特性接着是PHP 7中面向对象的程序设计概念。接着我们将解释如何提高PHP 7 App性能及数据库性能。通过这本书,你将能够使用本书中讨论的多种基准测试工具来提高你的程序性能。*后,本书讨论了PHP的*实践来帮助你提高编码质量。本书是一本循序渐进的指南,目的在于通过真实的案例来提高你的PHP代码质量。
|
關於作者: |
吕毅,链家网架构师,链家网大数据平台团队负责人。2015年8月加入链家网,之前负责链家网基础服务平台建设。 曾就职于百度移动云事业部(2012~2015),新浪平台架构部SAE(2010~2012)。目前正在攻读北京大学计算机在职硕士。
Altaf曾在团队中担任系统工程师,使用汇编语言与C语言为测试机器人开发系统控制软件,之后他对Web技术非常感兴趣,并自此投身Web领域。Altaf曾在工作中使用过许多PHP框架,例如Zend、Laravel、Yii,同时他也使用过不少开源项目,例如Drupal、WordPress、PrestaShop和Magento。Altaf自主设计并实现了两套CMS系统,实现了多语言支持、全线控制、翻译能力以及不同种类的多语言内容管理。现如今,Altaf是一家时尚企业shy7lo.com的技术主管,工作职责是管理公司内部与国外的研发团队,进而落实Magento和Laravel应用程序的开发与部署工作。除了Web应用程序外,Altaf还开发过iOS、Android应用程序,例如在Lumen构建API。Altaf是面向服务架构(SOA)的狂热爱好者,并成功地在多个项目中使用它。
Altaf非常关注Web性能,并在高速发展与可扩展的生产环境中运用了*的技术,如PHP 7、Nginx、Redis、Varnish等。他是Debian系统的爱好者,并已将其应用于所有Web应用程序的运行环境中。吕毅,链家网架构师,链家网大数据平台团队负责人。2015年8月加入链家网,之前负责链家网基础服务平台建设。 曾就职于百度移动云事业部(2012~2015),新浪平台架构部SAE(2010~2012)。目前正在攻读北京大学计算机在职硕士。
Altaf Hussain是一位在PHP领域具有6年以上经验的全栈工程师及移动应用开发者,他在巴基斯坦获得电气工程学士学位,其间专攻计算机和通信,兼具电气工程师的理论知识与软件工程师的内涵。
Altaf曾在团队中担任系统工程师,使用汇编语言与C语言为测试机器人开发系统控制软件,之后他对Web技术非常感兴趣,并自此投身Web领域。Altaf曾在工作中使用过许多PHP框架,例如Zend、Laravel、Yii,同时他也使用过不少开源项目,例如Drupal、WordPress、PrestaShop和Magento。Altaf自主设计并实现了两套CMS系统,实现了多语言支持、全线控制、翻译能力以及不同种类的多语言内容管理。现如今,Altaf是一家时尚企业shy7lo.com的技术主管,工作职责是管理公司内部与国外的研发团队,进而落实Magento和Laravel应用程序的开发与部署工作。除了Web应用程序外,Altaf还开发过iOS、Android应用程序,例如在Lumen构建API。Altaf是面向服务架构(SOA)的狂热爱好者,并成功地在多个项目中使用它。
Altaf非常关注Web性能,并在高速发展与可扩展的生产环境中运用了*的技术,如PHP 7、Nginx、Redis、Varnish等。他是Debian系统的爱好者,并已将其应用于所有Web应用程序的运行环境中。
工作之余,Altaf喜欢写写文章,他的文章大多发表于programmingtunes.com和techyocean.com上。与此同时,Altaf已经撰写了几本由Packt出版的书,包括Learning Phalcon PHP、Mastering jQuery Mobile、PrestaShop Module Development。
关于审校者
Raul Mesa Ros自2006年以来便一直从事与Web开发相关的工作,他之前做Java相关工作,后来转投PHP领域,并获得了一些资格认证,例如Zend官方授予的ZCE、ZFC。在积累了几个大流量的Web项目开发经验后,Raul现在对DevOps的理念很感兴趣。
Raul目前是EuroMillions.com的高级Web开发工程师,使用DevOps和PHP技术,同时作为负责人还带领着多个中小型项目。
Raul的Twitter是@rmrbest。
|
目錄:
|
目录
1搭建环境1
搭建Windows环境2
搭建Debian或Ubuntu环境5
Debian5
Ubuntu6
搭建CentOS环境10
安装Nginx10
安装PHP 711
安装Percona Server14
搭建Vagrant环境15
本章小结17
2PHP 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
3PHP 7应用性能提升44
Nginx与Apache44
Apache44
Nginx45
HTTP Server优化45
缓存静态文件46
HTTP持久链接47
Apache48
Nginx49
GZIP压缩49
PHP独立部署服务52
关闭不用的模块52
Web服务器资源54
内容分发网络(CDN)55
使用CDN56
CSS与JavaScript优化57
合并58
缩小58
全页缓存67
Varnish67
基础设施70
Web服务器71
数据库服务器72
负载均衡(LB)72
HAProxy负载均衡73
本章小结77
4提升数据库性能78
MySQL数据库78
查询缓存(Query Caching)79
存储引擎80
MyISAM存储引擎81
InnoDB存储引擎81
Percona Server - MySQL的fork83
安装Percona服务器83
MySQL性能监控工具84
phpMyAdmin84
MySQL工作台87
Percona工具箱88
Percona XtraDB 集群(PXC)91
Redis 键值缓存存储94
连接Redis服务器96
用Redis保存和获取数据97
Redis管理工具98
Memcached键值缓存存储100
本章小结101
5调试和分析102
Xdebug102
使用Sublime Text调试103
使用Eclipse调试108
使用Xdebug分析111
PHP DebugBar113
本章小结117
6PHP应用的压力负载测试118
Apache JMeter118
ApacheBench ab125
Siege127
真实世界中应用程序的压力测试129
Magento 2130
WordPress 4131
Drupal 8131
本章小结133
7PHP编程最佳实践134
代码风格134
测试驱动开发(TDD)138
设计模式141
面向服务的体系架构(SOA)142
保持面向对象和可重用143
PHP 框架143
版本控制系统(VCS)和Git143
部署和持续集成(CI)144
本章小结145
A提升工作效率的工具147
Composer ?C PHP依赖管理工具147
安装Composer147
使用Composer148
Git ?C 一个版本控制系统150
安装Git150
使用Git150
创建新分支和合并152
克隆一个仓库153
Webhooks154
管理仓库的桌面工具155
Grunt watch157
小结160
BMVC和框架161
MVC设计模式161
Model162
Views162
Controllers163
Laravel163
安装163
特性164
Eloquent ORM166
Artisan命令行169
迁移170
Blade模版172
其他特性175
Lumen175
Apigility175
小结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工程师们提供了更好的开发语言,在解决了我们痛点的同时还为未来提供了更多的可能!谢谢!
吕毅
链家网平台架
|
|