PHP 核心技術與最佳實踐, 2/e

PHP 核心技術與最佳實踐, 2/e

作者: 列旭松 陳文
出版社: 機械工業
出版在: 2018-10-08
ISBN-13: 9787111608417
ISBN-10: 7111608410
裝訂格式: 平裝





內容描述


PHP領域公認的標桿之作,被譽為“PHP開發工程師能力進階的必讀書”,致力於為希望成為中高級PHP程序員的讀者提供全面、高效的指導。
本書第1版出版於2012年,累計印刷超過10次,6年後全新升級,一方面根據PHP技術最新的發展刪除和更新了一些過時的內容,另一方面對原來的部分內容作了深度優化。
全書共13章,邏輯上分為5個部分:
第一部分(1~2章):從不同的角度闡述了面向對象軟件設計思想的核心概念、技術和原則,分析了面向對象的特性、設計模式的理念,指出瞭如何設計低耦合、高可擴展性的軟件,等等。
第二部分(3~6章):詳細講解了PHP網絡編程的原理、方法、技巧和一些重要的操作,PDO、數據庫應用優化,數據庫設計和MySQL的高級應用,PHP框架的實現原理。
第三部分(第7章):圍繞PHP擴展開發進行了細緻而深入的探討,解析了PHP的底層實現和Zend虛擬機API,並用PHP擴展開發的實例帶領讀者走進PHP的底層世界,旨在讓讀者對PHP性能優化、底層原理進行深入的理解。
第四部分(8~10章):重點討論了緩存的設計、Memcached的原理與實踐、NoSQL數據庫Redis源碼分析與應用實踐等內容。
第五部分(12~13章)詳細講解了PHP代碼的調試和測試、Hash算法和數據庫的實現。
本書第1版出版於2012年,至今仍熱銷並不斷收到讀者反饋,但是這6年來,PHP技術和因特網開發領域有很多新變化:
(1)PHP從PHP5.3版本到PHP7版本,性能大幅提升,語法和內容都有新變化。
(2)模板引擎和Pear逐漸被取代,PHP框架開始使用Composer管理依賴和構建,Composer已經成為一種必備技能。
(3)分佈式事務、數據庫中間件以及全文搜索已經成為數據庫裡最常用的三個工具,NoSQL從一個小眾技術發展為大眾流行技術。
(4)服務治理和微服務已經流行並在PHP領域越來越受重視。
……
基於上述變化,無論是讀者還是作者,都有了迫切更新本書的需求。第2版​​在第1版的基礎上,做瞭如下更新:
(1)新增“命名空間”和“自動加載”等重要知識點。
(2)新增Laravel框架和composer依賴管理等流行內容。
(3)對“異常和錯誤處理”的內容進行了增強。
(4)刪除“正則表達式”“PHP模板引擎”等在PHP開發中不再推薦使用或使用減少的知識點。
(5)新增HTTP2和TCP/IP相關內容,以滿足高性能架構的需求。
(6)新增集群和分佈式環境下的會話處理相關內容。
(7)新增“RPC和微服務”等熱點技術內容。
(8)新增了MySQL全文檢索、ElasticSearch、數據庫中間件等面向更複雜業務的數據庫技術。
(9)新增了“PHP框架實現原理”的內容,Composer框架已經成為主流開發模式。
(10)對緩存相關內容做了較大改動,新增了近幾年較新穎和高效的緩存算法。
(11)結合PHP的最新版本,對測試與調試的內容做了較大修改。
(12)對擴展相關的內容進行了增強


目錄大綱


前言
第1章面向對象思想的核心概念1 
1.1面向對象的“形”與“本”2 
1.1.1對象的“形”2 
1.1.2對象的“本”4 
1.1.3對象與數組6 
1.1. 4對象與類6 
1.2魔術方法的應用8 
1.2.1 set和get方法8 
1.2.2 call和callStatic方法…11 
1.2.3 toString方法和debugInfo方法13 
1.3命名空間與自動加載18 
1.3.1理解命名空間18 
1.3.2自動加載21 
1.4繼承與多態21 
1.4.1類的組合與繼承22 
1.4.2各種語言中的多態26 
1.5面向接口編程30 
1.5.1接口的作用30 
1.5.2對PHP接口的思考32 
1.6反射35 
1.6.1如何使用反射API35 
1.6.2反射有什麼作用37 
1.7異常和錯誤處理39 
1.7.1如何使用異常處理機制39 
1.7.2怎樣看PHP的異常45 
1.7.3 PHP中的錯誤級別45 
1.7.4 PHP中的錯誤處理機制47 
1.7.5 PHP7對異常機制的改進49
1.8本章小結53 
第2章面向對象的設計原則54 
2.1面向對象設計的五大原則55 
2.1.1單一職責原則55 
2.1.2接口隔離原則63 
2.1.3開放-封閉原則66 
2.1.4替換原則69 
2.1 .5依賴倒置原則71 
2.2一個面向對象留言本的實例73 
2.3面向對象的思考77 
2.4本章小結78 
第3章PHP網絡技術及應用79 
3.1 HTTP協議詳解79 
3.1.1 HTTP協議與HTTP/2協議… 79 
3.1.2 HTTP協議如何工作81 
3.1.3 HTTP應用:模擬灌水機器人86 
3.1.4垃圾信息防禦措施92 
3.2抓包工具96 
3.2.1抓包工具分類96 
3.2.2 Fiddler功能與原理96 
3.2. 3安裝Fiddler97 
3.2.4 Fiddler基本界面98 
3.2.5使用Fiddler進行HTTP斷點調試101 
3.3 Socket進程通信機制及應用104 
3.3.1進程通信相關概念104 
3.3.2 Socket演示:實現服務器端與客戶端的交互105 
3.3.3使用wireshar分析TCP/IP數據包108
3.3.4 Socket函數原型114 
3.3.5 PHP中的Socket函數114 
3.3.6 Socket交互應用:使用Socket抓取數據117 
3.4 cURL工具及應用119 
3.4.1建立cURL請求的基本步驟119 
3.4.2檢查cURL錯誤和獲取返回信息120 
3.4.3在cURL中偽造頭信息122 
3.4.4在cURL中用POST方法發送數據124 
3.4.5使用cURL實現簡單的文件上傳服務125 
3.4.6 cURL批處理129 
3.4.7 cURL設置項130 
3.5簡單郵件傳輸協議SMTP131 
3.5.1 SMTP協議如何工作132 
3.5.2 SMTP協議常用命令133 
3.5.3 SMTP協議應用:使用Socket發送郵件133 
3.6 WebService的前世今生138 
3.6.1 WebService簡介138 
3.6.2 Web服務的實現模式138 
3.6.3簡單對象訪問協議SOAP…140 
3.6.4調試工具soapUI145 
3.7 Cookie詳解148 
3.7.1 Cookie的基本概念及設置…148 
3.7.2 PHP和JavaScript對Cookie的操作149 
3.7.3 Cookie存儲機制及應用151
3.7.4 Cookie跨域與P3P、CORS協議153 
3.7.5本地存儲localStorage156 
3.8 Session詳解158 
3.8.1 Session的基本概念及設置158 
3.8.2 Session的工作原理159 
3.8.3 Session入庫161 
3.8.4集群環境下的Session處理165 
3.8.5 Cookie與Session問答166 
3.9本章小結167 
第4章RPC與服務治理的概念169 
4.1理解RPC170 
4.1.1 RPC的原理171 
4.1.2 RPC的組成元素172 
4.2 HPROSE的介紹174 
4.3何為服務治理176 
4.4服務發現與服務註冊177 
4.4.1 Paxos協議178 
4.4.2 ZooKeeper的介紹與安裝…179 
4.4.3深入了解ZooKeeper180 
4.4.4 ZooKeeper的應用183 
4.4.5 etcd的介紹185 
4.4.6在PHP中使用etcd參與服務治理187 
4.5高性能網絡庫193 
4.6微服務概念簡介194 
4.7本章小結196 
第5章PHP與數據庫基礎197
5.1什麼是PDO197 
5.1.1 PDO預定義類198 
5.1.2如何使用PDO199 
5.1.3 PDO參數綁定與預編譯200 
5.1.4 PDO事務處理205 
5.1.5 PDO的效率問題206 
5.2數據庫應用優化206 
5.2 .1索引與性能分析206 
5.2.2服務器和配置的優化209 
5.2.3 MySQL瓶頸及應對措施211 
5.3數據庫設計212 
5.3.1範式與反範式212 
5.3.2數據庫分區213 
5.3.3分錶的應用215 
5.4 MySQL的高級應用217 
5.4.1 MySQL視圖217 
5.4.2 MySQL存儲過程和事件調度220 
5.4.3用MySQL模擬消息隊列223 
5.4.4 SQL注入漏洞與防範226 
5.4.5 MySQL全文搜索與Elasticsearch231 
5.5數據庫鎖與事務239 
5.5.1數據庫鎖239 
5.5.2數據庫事務246 
5.5.3分佈式事務254 
5.6數據庫中間件257 
5.6.1中間件的介紹257 
5.6.2數據庫中間件的原理與實現257 
5.7本章小結263
第6章PHP框架實現原理264 
6.1 MVC模式264 
6.2 PHP框架Lonicera 0.1265 
6.2.1實現bootstrap267 
6.2.2路由器層的實現269 
6.2.3數據模型274 
6.2.4視圖層實現282 
6.2.5對框架的初步改進286 
6.3 Lonicera 0.2框架增強290 
6.3.1引入異常機制290 
6.3.2攔截器和插件的原理與實現293 
6.3.3 Request增強與安全防禦296 
6.4 Lonicera框架0.3版實現297 
6.4.1 composer的介紹與安裝297 
6.4.2 composer的類加載機制301 
6.4.3使用composer來重構框架303 
6.4.4基於composer的Model增強307 
6.4.5控制反轉與依賴注入309 
6.5本章小結318 
第7章PHP擴展開發319 
7.1為什麼要開發PHP擴展319 
7.2搭建PHP擴展框架319 
7.2.1 PHP源代碼目錄320 
7.2.2 ext_skel工具320 
7.2.3 Windows平台環境配置320 
7.2.4 Linux平台環境配置323
7.2.5 PHP的生命週期325 
7.3 PHP內核中的變量327 
7.3.1 PHP變量在內核中的存儲方式327 
7.3.2 PHP內核變量訪問宏329 
7.3.3引用計數器與寫時復制330 
7.4 PHP內核中的HashTable分析…332 
7.4.1 PHP內核HashTable的數據結構332 
7.4.2 HashTable的代碼實現337 
7.5 Zend API詳解與擴展編寫341 
7.5.1什麼是Zend引擎342 
7.5.2 Zend引擎內存管理342 
7.5.3 PHP擴展的架構342 
7.5.4接收用戶傳遞的參數350 
7.5.5在PHP擴展中創建變量357 
7.5.6在PHP擴展中為變量賦值…360 
7.5.7錯誤和輸出API371 
7.5.8運行時信息函數374 
7.5.9調用用戶自定義函數374 
7.5.10 PHP配置項376 
7.5.11創建常量的宏379 
7.5.12對象創建與操作380 
…… 
7.6.1 snowflake算法384 
7.6.2自旋鎖原理385 
7.6 .3擴展的實現387 
7.7本章小結389 
第8章緩存詳解390
8.1認識緩存390 
8.1.1為什麼使用緩存390 
8.1.2命中率391 
8.1.3緩存更新策略392 
8.1.4緩存最大數據量394 
8.2文件緩存394 
8.2.1文件緩存機制394 
8.2.2文件緩存開源產品Secache396 
8.3 Opcode緩存398 
8.4客戶端緩存404 
8.4.1客戶端緩存規則405 
8.4.2 HTTP協議中的緩存使用…405 
8.4.3 HTTP緩存實例408 
8.4.4 HTML 5中的Application Cache410 
8.5 Web服務器緩存411 
8.5.1 Apache緩存412 
8.5.2 Nginx緩存412 
8.6本章小結414 
第9章Memcached使用與實踐415 
9.1為什麼要用Memcached415 
9.2 Memcached的安裝及使用415 
9.2.1安裝Memcached服務器416 
9.2.2安裝Memcached客戶端417 
9.2.3使用memcache擴展訪問Memcached服務器418 
9.2.4使用Memcached加速Web應用421 
9.3深入了解Memcached422
9.3.1 Memcached如何支持高並發422 
9.3.2使用Slab分配算法保存數據422 
9.3.3刪除過期item426 
9.3.4使用LRU算法淘汰數據427 
9.3.5 Memcached多線程模型428 
9.4 Memcached分佈式佈置方案431 
9.4 .1普通Hash分佈431 
9.4.2一致性Hash分佈432 
9.4.3一致性Hash分佈算法實例434 
9.5本章小結436 
第10章Redis使用與實踐437 
10.1 Redis的安裝及使用437 
10.1.1 Redis安裝步驟437 
10.1.2修改Redis配置文件438 
10.1.3運行Redis服務器439 
10.1.4 key相關命令439 
10.1.5 Redis支持的數據類型…441 
10.1.6 Redis排序命令詳解447 
10.2事務處理449 
10.2.1事務處理原理449 
10.2.2事務處理實現450 
10.3持久化452 
10.3.1內存快照452 
10.3.2日誌追加452 
10.4主從同步453 
10.4.1 Redis主從同步原理453
10.4.2 Slave端的工作流程454 
10.4.3 Master端的工作流程457 
10.5 Redis集群實戰462 
10.5.1 Redis集群搭建462 
10.5.2 Redis集群原理467 
10.6擴展庫phpredis安裝及使用470 
10.7 Redis應用實踐470 
10.7. 1使用消息隊列發布微博…471 
10.7.2 Redis替代文件存儲Session472 
10.8深入了解Redis內核475 
10.8.1內存淘汰475 
10.8.2對象引用計數器477 
10.8.3自動關閉超時連接479 
10.8.4清除過期數據481 
10.9本章小結482 
第11章高性能網站架構方案483 
11.1如何優化網站響應時間483 
11.1.1吞吐率484 
11.1.2壓力測試485 
11.1.3持久連接487 
11.2 MySQL響應速度提高方案:HandlerSocket491 
11.2.1 HandlerSocket工作原理491 
11.2.2 HandlerSocket安裝和配置491 
11.2.3 PHP-HandlerSocket性能測試493 
11.3 MySQL穩定性提高方案:主從復制494
11.3.1主從復制工作原理494 
11.3.2主從復製配置495 
11.3.3連接主從服務器497 
11.4 Web應用加速方案:Varnish…499 
11.4.1傳統代理與反向代理499 
11.4.2 Varnish安裝和配置500 
11.4.3 Varnish性能測試501 
11.4.4修改緩存規則503 
11.4.5監控Varnish運行狀態…505 
11.5異步計算方案:Gearman506 
11.5.1 Gearman工作原理506 
11.5.2安裝Gearman和PHP擴展508 
11.5.3使用Gearman異步發送郵件508 
11.6本章小結510 
第12章代碼調試和測試511 
12.1調試PHP代碼511 
12.1.1 PHP調試函數511 
12.1.2斷點調試與變量跟踪工具Xdebug515 
12.1.3 phpdbg的使用介紹518 
12.1 .4使用strace來跟踪定位PHP程序520 
12.2前端調試525 
12.2.1 Firebug調試API525 
12.2.2使用Firebug調試DOM結構527 
12.2.3使用Firebug進行遠程調試528 
12.3日誌管理530
12.3.1 PHP日誌531 
12.3.2 Apache/Nginx服務器日誌531 
12.3.3 MySQL日誌534 
12.4代碼性能測試技術537 
12.4.1時間點測試537 
12.4.2文件查看工具WinCache-Grind538 
12.4.3性能測試注意事項540 
12.5單元測試541 
12.5.1單元測試框架PHPUnit的安裝541




相關書籍

微服務治理:體系、架構及實踐

作者 李鑫

2018-10-08

Hadoop 平臺搭建與應用

作者 米洪 張鴒

2018-10-08

PHP 從入門到項目實踐(超值版)

作者 聚慕課教育研發中心

2018-10-08