高性能PHP 7
  • 推荐0
  • 收藏6
  • 浏览2.5K

高性能PHP 7

(巴基斯坦)Altaf Hussain (作者)  吕毅 (译者)

  • 书  号:978-7-121-30938-0
  • 出版日期:2017-04-01
  • 页  数:200
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:张春雨
《高性能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。
勘误提交
虽然我们已经很谨慎地来保证书籍内容的准确性,但错误仍然可能存在。如果你在某本书中发现错误——无论是正文还是代码中的错误——请告诉我们,我们都将不胜感激。这样,你不仅帮助了其他读者,也帮助我们改进了后续版本。如果发现任何勘误,可以在博文视点网站相应图书的页面提交勘误信息。一旦你找到的错误被证实,提交的信息就会被接受,我们的网站上也会发布这些勘误信息。你可以随时浏览图书页面,查看已发布的勘误信息。

目录

1 搭建环境 1
搭建Windows环境 2
搭建Debian或Ubuntu环境 4
Debian 5
Ubuntu 5
搭建CentOS环境 9
安装Nginx 10
安装PHP 7 11
安装Percona Server 13
搭建Vagrant环境 14
本章小结 16
2 PHP 7新特性 17
OOP特性 17
类型声明 18
命名空间与use关键字批量声明 22
匿名类 27
不推荐使用老式的构造方法 32
Throwable接口 33
新的操作符 35
太空飞船操作符(<=>) 35
null合并运算符(??) 37
统一变量语法 39
其他特性和变更 40
常量数组 40
Switch中的多个default默认值 41
Session_start函数中的选项数组 41
Unserialize函数引入过滤器 42
本章小结 42
3 PHP 7应用性能提升 43
Nginx与Apache 43
Apache 44
Nginx 44
HTTP Server优化 45
缓存静态文件 45
HTTP持久链接 46
Apache 47
Nginx 48
GZIP压缩 48
PHP独立部署服务 51
关闭不用的模块 51
Web服务器资源 53
内容分发网络(CDN) 54
使用CDN 55
CSS与JavaScript优化 56
合并 57
缩小 57
全页缓存 66
Varnish 66
基础设施 69
Web服务器 70
数据库服务器 71
负载均衡(LB) 71
HAProxy负载均衡 72
本章小结 76
4 提升数据库性能 77
MySQL数据库 77
查询缓存(Query Caching) 78
存储引擎 79
MyISAM存储引擎 80
InnoDB存储引擎 81
Percona Server - MySQL的fork 82
安装Percona服务器 82
MySQL性能监控工具 83
phpMyAdmin 83
MySQL工作台 86
Percona工具箱 87
Percona XtraDB 集群(PXC) 90
Redis 键值缓存存储 93
连接Redis服务器 95
用Redis保存和获取数据 96
Redis管理工具 97
Memcached键值缓存存储 99
本章小结 100
5 调试和分析 101
Xdebug 101
使用Sublime Text调试 103
使用Eclipse调试 107
使用Xdebug分析 110
PHP DebugBar 112
本章小结 116
6 PHP应用的压力/负载测试 117
Apache JMeter 117
ApacheBench (ab) 124
Siege 125
实际项目中应用程序的压力测试 128
Magento 2 129
WordPress 4 130
Drupal 8 130
本章小结 132
7 PHP编程最佳实践 133
代码风格 133
测试驱动开发(TDD) 137
设计模式 140
面向服务的体系架构(SOA) 141
保持面向对象和可重用 142
PHP框架 142
版本控制系统(VCS)和Git 142
部署和持续集成(CI) 143
本章小结 144
附录A 提升工作效率的工具 147
Composer:PHP依赖管理工具 147
安装Composer 147
使用Composer 148
Git:一个版本控制系统 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

本书勘误

印次
  • 页码:24\25  •  印次: 1

    namespace 中的 / 应为 \

    opennet 提交于 2017/3/24 10:04:03
    孙奇俏 确认于 2017/3/24 14:50:47
  • 页码:19  •  行数:12  •  印次: 1

    第三段代码
    declare( strict_type=1 ); 应改为 declare( strict_types=1 );

    andreas 提交于 2022/7/13 18:47:03
    张春雨 确认于 2024/2/5 13:50:08
  • 页码:44  •  行数:6  •  印次: 1

    “进场”改为“进程”

    孙奇俏 提交于 2017/3/22 8:48:31
    张春雨 确认于 2017/3/22 9:27:56
  • 页码:53  •  行数:15  •  印次: 2

    wordker_connections 改为 worker_connections

    DANCELION 提交于 2018/5/6 12:25:08
    孙奇俏 确认于 2018/5/17 11:20:26
  • 页码:56  •  行数:3  •  印次: 1

    加载cssjs的代码写反了

    Heier 提交于 2017/6/25 17:42:47
    孙奇俏 确认于 2017/7/10 11:17:29

读者评论

  • 源代码的下载地址在哪?

    revin发表于 2017/5/26 15:10:09
    • 读者朋友你好,配书资料已经上传,在本页面的“下载资源”板块可以自行下载。

      博文小编发表于 2017/6/1 15:57:29

相关图书

看漫画学Python:有趣、有料、好玩、好用(全彩修订版)

关东升 著 赵大羽 绘 (作者)

ython是一门既简单又强大的编程语言,被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要,成为国家计算机等...

 

看漫画学Python 2:有趣、有料、好玩、好用(全彩进阶版)

关东升 ,赵大羽 (作者)

本书是《看漫画学Python》的进阶版本,继续秉承有趣、有料、好玩、好用的理念,并继续采用《看漫画学Python》一书中3个不同的漫画人物角色,通过这3个角色之...

 

趣玩Python:自动化办公真简单(双色+视频版)

本书以数据收集→数据清洗→数据分析→数据可视化→根据数据可视化结果(即图表)做决策为脉络,介绍Python在实际工作场景中的应用,侧重于用Python解决工作中...

 

软件交付通识

董越 (作者)

软件交付过程是指在编程序改代码之后,直到将软件发布给用户使用之前的一系列活动,如提交、集成、构建、部署、测试等。本书作为通识类图书,对软件交付过程的各个方面进行...

¥89.00

分布式系统与一致性

陈东明 (作者)

一致性是非常重要的分布式技术。众所周知,分布式系统有很多特性,如可用性、可靠性等,这些特性多多少少会与一致性产生关系,受到一致性的影响。要全面研究、掌握分布式技...

¥79.00

人人都是产品经理(案例版):淘宝十年产品事

陶英琪 (作者)

做产品经理需要不断成长。然而回顾漫长的产品发展史,我们总会发现:有太多犯过的错误在反复出现,每一次都会有人掉入同样的“坑”。大量看似充满新意的点子、“前无古人”...

¥69.00