發表於2024-12-15
包郵 PHP 7底層設計與源碼實現|8004543 pdf epub mobi txt 電子書 下載
書名: | PHP 7底層設計與源碼實現|8004543 |
圖書定價: | 99元 |
圖書作者: | 陳雷;黃桃;李長林;李誌;王坤;肖濤;硃棟 |
齣版社: | 機械工業齣版社 |
齣版日期: | 2018/6/1 0:00:00 |
ISBN號: | 9787111599197 |
開本: | 16開 |
頁數: | 0 |
版次: | 1-1 |
作者簡介 |
陳雷 滴滴順風車運營營銷研發技術負責人,曾任騰訊高級PHP研發工程師、開心網高級PHP研發工程師、百度PHP研發工程師。清華大學計算機係本科,計算機在職碩士。目前緻力於滴滴順風車智能運營平颱的建設,有很強的架構能力,豐富的業務抽象經驗與管理經驗。 黃桃 滴滴資深開發工程師,多年PHP開發經驗,尤善高並發處理、大型網站架構,樂於鑽研技術難點,願意分享。 李長林 滴滴資深工程師,曾就職於騰訊、滴滴等知名互聯網公司,專注於高並發Web後颱開發,活躍於開源社區。 李誌 資深Web開發者,曾任職於騰訊,現就職於滴滴。 王坤 滴滴順風車後端開發工程師,PHP愛好者,多年開發經驗,喜歡學習和交流。 肖濤 穿梭在PHP各大社區多年,具有豐富的高並發處理經驗,現任職滴滴高級研發工程師。 硃棟 滴滴後端開發工程師,曾多次參與大型高並發項目的設計與開發,有豐富的後端開發經驗,喜歡研究新技術,喜歡摺騰。 "})cnp({"error":"pdos_captcha"}); |
內容簡介 |
滴滴齣行專傢聯閤撰寫,多位PHP領域大咖推薦,全麵吃透PHP底層設計,全麵講解PHP內核架構、核心構成與內存管理、詞法與句法解析、Zend 虛擬機、函數及關鍵擴展等設計細節與源碼實現。 本書邏輯上分為四部分,共計14章內容。 第1~2章解讀PHP 7的新特性、源碼的整體框架(各目錄的源碼和功能)。 第3~6章詳細介紹PHP 7的變量實現,涵蓋基本變量zval的結構、字符串zend_string的實現、核心結構HashTable(即數組)實現,以及類與對象的實現。 第7~11章剖析PHP 7核心的實現,重點是PHP 7的生命周期,涵蓋生命周期的模塊初始化階段中配置文件的解析,內存管理原理與實現,詞法和語法分析的實現,核心Zend虛擬機的實現。 第12~14章介紹PHP 7中基本語法、函數、擴展的實現。 其中,第3章、第4章、第5章和第14章為本書的重點章節。 |
目錄 |
本書贊譽 序 前言 第1章 PHP 7概況1 1.1 PHP簡史與新特性1 1.2 PHP 7安裝和調試7 1.2.1 編譯安裝7 1.2.2 使用GDB調試PHP 78 1.2.3 vld擴展10 1.3 PHP 7源碼閱讀工具介紹13 1.3.1 Source Insight13 1.3.2 Understand16 1.3.3 Vim+Ctags19 1.4 本章小結20 第2章 初識PHP 7源碼整體框架21 2.1 PHP 7語言的執行原理21 2.1.1 編譯型語言與解釋型語言21 2.1.2 PHP 7的執行原理概述23 2.2 PHP 7內核架構26 2.3 PHP 7源碼結構初步介紹27 2.3.1 sapi目錄源碼27 2.3.2 Zend目錄源碼28 2.3.3 main目錄源碼29 2.3.4 ext目錄源碼29 2.3.5 TSRM目錄源碼29 2.4 本章小結30 第3章 基本變量31 3.1 基本知識31 3.1.1 數據類型31 3.1.2 結構體與聯閤體32 3.1.3 堆和棧的基本知識34 3.2 變量的類型和實現35 3.2.1 PHP 5的zval35 3.2.2 PHP 7的zval37 3.2.3 PHP 7變量類型40 3.2.4 整型和浮點型41 3.2.5 字符串類型42 3.2.6 數組43 3.2.7 引用43 3.2.8 間接zval44 3.2.9 常量和常量AST46 3.2.10 資源類型47 3.2.11 對象47 3.3 變量的作用域49 3.3.1 全局變量49 3.3.2 局部變量49 3.3.3 中間變量50 3.3.4 靜態變量51 3.3.5 常量51 3.4 對垃圾迴收的支持51 3.4.1 gc的基本結構52 3.4.2 引用計數53 3.4.3 循環引用問題55 3.4.4 垃圾迴收55 3.5 本章小結63 第4章 字符串64 4.1 字符串的結構64 4.1.1 PHP 7字符串的具體實現65 4.1.2 字符串的二進製安全68 4.1.3 zend_string API69 4.2 智能字符串72 4.2.1 smart_str對比smart_string72 4.2.2 智能字符串的具體實現73 4.2.3 smart_str API75 4.3 進階76 4.3.1 字符串的賦值與寫時分離76 4.3.2 字符串的類彆(內部字符串)79 4.3.3 字符串的類型轉換84 4.3.4 字符串的雙引號與單引號87 4.3.5 PHP常用字符串操作函數實現90 4.4 本章小結92 第5章 數組的實現93 5.1 基本概念93 5.1.1 數組的語義93 5.1.2 數組的概念94 5.2 PHP 5數組的實現95 5.3 PHP 7數組的實現99 5.3.1 基本結構100 5.3.2 初始化105 5.3.3 packed array和hash array的區彆114 5.3.4 插入、更新、查找和刪除123 5.3.5 哈希衝突的解決130 5.3.6 擴容和rehash操作132 5.3.7 數組的遞歸保護134 5.4 本章小結135 第6章 麵嚮對象136 6.1 類的種類136 6.1.1 普通類136 6.1.2 抽象類137 6.1.3 接口138 6.1.4 特性140 6.1.5 final類142 6.1.6 匿名類142 6.2 類的特性143 6.2.1 類的屬性143 6.2.2 訪問控製143 6.3 類的實現144 6.3.1 類的結構144 6.3.2 靜態屬性、常量和方法149 6.3.3 接口和特性151 6.3.4 繼承152 6.4 對象的實現155 6.4.1 實現155 6.4.2 普通屬性156 6.5 其他特性157 6.5.1 魔術方法157 6.5.2 自動加載157 6.6 本章小結159 第7章 生命周期160 7.1 基礎知識160 7.1.1 信號處理160 7.1.2 SAPI簡介164 7.1.3 SAPI核心結構SG(v)166 7.2 CLI模式的生命周期167 7.2.1 模塊初始化階段168 7.2.2 請求初始化階段175 7.2.3 執行階段177 7.2.4 請求關閉階段178 7.2.5 模塊關閉階段179 7.2.6 其他工作180 7.3 FPM模式的生命周期181 7.3.1 多進程管理182 7.3.2 網絡編程193 7.3.3 FastCGI協議195 7.4 其他模式200 7.5 本章小結201 第8章 配置文件解析202 8.1 配置文件簡介202 8.2 配置基本語法203 8.3 配置文件的加載204 8.4 擴展配置208 8.5 運行時的配置212 8.6 本章小結213 第9章 內存管理214 9.1 內存管理的意義214 9.2 內存管理的準備知識216 9.2.1 基本概念216 9.2.2 內存對齊218 9.3 內存管理的數據結構219 9.3.1 _zend_mm_heap219 9.3.2 _zend_mm_chunk223 9.4 內存管理的詳細實現226 9.4.1 內存管理初始化227 9.4.2 內存申請227 9.4.3 內存管理之huge內存229 9.4.4 內存管理之large內存230 9.4.5 內存管理之small內存231 9.5 內存迴收234 9.6 本章小結235 第10章 詞法和語法分析236 10.1 基礎知識236 10.1.1 編譯器237 10.1.2 源程序分析237 10.1.3 BNF範式241 10.2 詞法與語法分析器242 10.2.1 Lex與YACC242 10.2.2 Re2c與Bison247 10.3 Token類型252 10.4 PHP 7詞法與語法相關數據結構253 10.4.1 CG(v)宏253 10.4.2 zend_stack255 10.4.3 zend_ast相關結構255 10.4.4 zend_arena262 10.4.5 zend_parser_stack_elem262 10.5 PHP 7詞法與語法分析263 10.5.1 整體過程263 10.5.2 詞法與語法分析階段263 10.6 AST的優勢273 10.7 源碼中的其他使用275 10.8 本章小結275 第11章 Zend虛擬機276 11.1 基礎知識276 11.1.1 Zend虛擬機架構276 11.1.2 符號錶278 11.1.3 函數調用棧278 11.1.4 指令280 11.2 相關數據結構281 11.2.1 EG(v)281 11.2.2 符號錶281 11.2.3 指令284 11.2.4 指令集288 11.2.5 執行數據290 11.2.6 執行棧291 11.3 AST編譯過程294 11.3.1 op_array初始化 294 11.3.2 AST編譯295 11.3.3 設置指令handler307 11.4 執行過程308 11.4.1 執行棧分配309 11.4.2 初始化execute_data309 11.4.3 調用hanlder函數執行311 11.4.4 釋放execute_data315 11.5 其他調度方式315 11.6 本章小結316 第12章 基本語法實現317 12.1 條件判斷317 12.2 循環語句322 12.2.1 foreach語句322 12.2.2 while語句324 12.2.3 for語句327 12.2.4 do while語句329 12.3 中斷與跳轉331 12.3.1 break的實現331 12.3.2 goto的實現335 12.4 文件引入338 12.5 異常/錯誤處理339 12.6 本章小結343 第13章 函數實現344 13.1 基礎知識 344 13.2 用戶定義函數的編譯345 13.3 用戶定義函數的執行352 13.4 內置函數358 13.4.1 內置函數的注冊358 13.4.2 內置函數的執行360 13.5 本章小結360 第14章 擴展361 14.1 擴展的實現原理362 14.2 PHP擴展363 14.2.1 擴展的實現363 14.2.2 JSON擴展366 14.3 Zend擴展367 14.3.1 Zend擴展的實現367 14.3.2 opcache擴展369 14.4 自定義擴展378 14.4.1 初始化379 14.4.2 編譯配置380 14.4.3 功能實現381 14.4.4 注冊配置項383 14.4.5 編譯、安裝385 14.5 本章小結386 附錄A php.ini配置項說明387 附錄B Token與opcode含義對應錶413 |
包郵 PHP 7底層設計與源碼實現|8004543 pdf epub mobi txt 電子書 下載