-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

PHP7內核剖析

( 簡體 字)
作者:秦朋類別:1. -> 程式設計 -> 網路編程 -> PHP
譯者:
出版社:電子工業出版社PHP7內核剖析 3dWoo書號: 47932
詢問書籍請說出此書號!

缺書
NT售價: 445

出版日:10/1/2017
頁數:492
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121328107
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

序一


PHP是一門優秀的Web開發的編程語言,一直說PHP是世界“最優秀”的語言,其他各個語言,包括Python/Java等語言都有相應的源碼剖析或者內核解讀之類的書籍,哪怕MySQL/Redis等都有相應的源碼解讀書籍。但是目前的圖書市場,除了零零碎碎的一些PHP內核描述的文章,真正關于內核的書籍只有英文的《Extending and Embedding PHP》,中文電子版的《TIPI:深入理解PHP內核》算是相對比較專業的描述PHP內核特性的書籍。
本書從整個PHP的內部數據結構到內存管理GC,從PHP腳本的編譯執行原理到擴展開發,都有詳實、深入的描述,是一本國內難得的描述PHP內核的佳作,非常值得推薦。看完以后,對整個PHP的內部理解,會更上一個新檔次。
秦朋是我曾經在360公司的同事,多年前他就表現出對PHP技術的巨大興趣,經過幾年的努力和對內核的深入閱讀理解,終于編寫了本書。我讀完內容,感慨萬千,對很多PHP內部技術細節都理解非常透徹,并且文風通俗易懂,代碼翔實清晰,確實是對PHP下了很深的功夫,也體現了不俗的技術水平,對秦朋的努力感到驕傲和佩服。希望本書能夠給中國PHP行業帶來新的理解和血液,為PHP程序員們帶來提高和成長,也讓我國PHP技術真正提升到一個新的臺階。

——謝華亮(黑夜路人)

序二


認識作者,是在公司內網發現他分享了幾個關于PHP內核的文章,后來在釘釘上直接找他交流是否能轉載到我的PHP飯米粒的公眾號上,一來二去,就熟悉了。
世面上PHP的書籍不少,但對于PHP內核分析的書很少,能分析這么透徹就更少了,以前對PHP5.x版本做過粗略的分析,對PHP7的變化其實了解并不多,當作者把電子初版給我之后,一口氣看了前面幾章,從SAPI到ZVAL都寫得很透徹,收獲頗多。
當由PC互聯網轉戰到移動互聯網、物聯網后,PHP的優勢確實小了,一些新的語言也陸陸續續冒出,也受到了不同程度的熱捧,其實這些高并發、非阻塞都不是什么高大上的概念,大多數常用語言都能實現,但目前很多人并沒有修練好內功,一但碰到問題,可能就會轉向那些可以直接補坑的新事物上,而不是去理解這門語言。可以預料到的是,一但在新的語言上碰到坑,又會轉向另一個,周而復始,對于自己,基本沒有提高,所以透過現象看本質很有必要,也就能一通百通了。
另一方面,現在的人都比較浮躁,很少有年輕人能夠沉下心去做深入的研究,我從業10多年,面試的人也眾多,大多數人在工作三年左右就會遇到一個瓶頸,主要原因是對業務非常熟悉了,也沒有挑戰了,就想通過換個環境來找新鮮感。而有些人可以自我蛻變,從日常的業務中找到感興趣的點深入學習,就如本書的作者一樣,這給大多數人也指明了另一種突破的方式。
最后建議PHPer都可以精讀此書,你就可以知道為什么PHP的一個變量類型可以變來變去,也可以知道為什么PHP的數組這么強大,深入之后,一定會為你打開一扇新的大門,讓你在技術的道路上走得更扎實。

——王晶(滴滴技術專家,Swoole開發者)






前  言


為什么要寫這本書
PHP作為最流行的語言之一,自第一個版本發布至今的二十幾年里經歷了多次重大的改進,尤其是PHP7版本的發布,其最大的亮點在于性能上的提升,比PHP5快了一倍。隨著PHP7的不斷普及,越來越多的項目從PHP5遷移到了PHP7,毫無疑問,PHP7將成為PHP歷史上里程碑式的一個版本。我是在大學時代接觸到的PHP,初次相識就被其簡潔、易用的語法所吸引了。在工作后的幾年里,我一直使用PHP作為主要的開發語言。當然,除了PHP,我也使用過很多其他語言,比如C、C++、Java、Golang、Python等,不同的語言有各自的特點、優勢,讓我印象最深的、也讓我最喜歡的有C、Golang、PHP。
? C
這是我評價最高的一門語言,其強大的操控能力、簡潔的語法、易于理解的處理方式無一不讓我折服。編程語言本身只是控制計算機的一種工具,然而很多高級語言過度隔離了人與計算機間的聯系,使得編程者并不理解計算機實際的工作機制,只能被編程語言限定在固定范圍內,而C語言在這一點上做得恰到好處,其沒有過度干預我們對計算機的操控,允許我們自由地控制內存、CPU。當然,C語言也有很多不方便的地方,過于簡單的接口使得很多操作不得不通過編寫大量的代碼來實現。
? Golang
并發是我對其最大的印象,我們可以用更容易理解的方式來實現并發,但是它的內存控制沒有C語言那么方便、靈活。
? PHP
PHP的底層是C語言實現的,這也使得它繼承了很多C語言的基因,PHP的簡潔、易用、學習成本低等特點成就了它今天的地位。
PHP的高度封裝性與弱類型的特點使得很多操作極其簡便,例如JSON的解析如果在Golang中完成,則需要定義一系列的結構體,然后才能完成解析,而在PHP中通過一行代碼就可以完成。正是PHP底層的強大才得以實現如此簡便的操作,那么強大的PHP背后到底是什么樣子的呢?我想很多PHPer都有過這個疑問。然而讓人感到沮喪的是,關于PHP內核的資料非常有限,已有的這些資料也不全面、系統,多數局限在理論介紹的層面上。后來我就直接去讀PHP的源碼,漸漸地發現,以前很多不理解的問題都在源碼中找到了答案。本書主要的出發點是給那些想要了解PHP底層實現的讀者一些啟發,幫助更多的人理解PHP的實現,甚至能夠參與到PHP的開發中,為未來PHP的發展貢獻一份力量!
本書適合的對象
? 有一定C語言基礎的讀者。
? 想要理解PHP內部實現的讀者。
? PHP高級工程師。
? 對虛擬機實現感興趣的讀者。
本書不適合作為PHP的入門教程。書中對于基礎性的、概念性的東西介紹很少,重點是源碼解析。
本書的結構
本書總共分為10章,章節之間存在一定的銜接,建議按照先后順序閱讀。其中第3∼第9章為Zend引擎相關的內容,也是本書的核心章節。
第1章介紹PHP的基礎內容。本章主要介紹PHP的歷史發展、PHP7的主要變化,重點講解PHP的構成部分與生命周期的幾個階段。
第2章介紹SAPI。本章選取了PHP三種常見的應用場景,介紹三個不同SAPI的實現:Cli、Fpm、Embed。SAPI是PHP的接入層,如果只想了解Zend引擎的內容,那么可以跳過本章。
第3章介紹數據類型。本章主要介紹PHP中變量的基礎結構zval,以及不同類型的結構,它們是PHP中最基礎的、使用最頻繁的數據結構,通過本章的內容你將了解PHP中變量的內部實現。
第4章介紹內存管理。本章主要介紹PHP變量自動回收機制的實現,以及PHP底層內存池、線程安全相關的實現。通過本章的內容,你將了解變量的內存是如何進行管理的,為什么PHP中的變量不需要手動申請釋放。其中內存池的實現比較獨立,它的實現與tcmalloc類似;線程安全只在多線程環境下使用,常見的Fpm、Cli模式不會用到,本書其他章節介紹的內容都是非線程安全的。
第5章介紹PHP的編譯與執行。本章介紹PHP代碼從編譯到執行的整個過程,這也是Zend引擎的核心實現。通過對本章的學習,你將了解PHP代碼是如何被Zend引擎識別、執行的。
第6章介紹函數的實現。本章介紹PHP中函數的實現,這也是Zend引擎的核心部分,本章的內容與第5章相關,介紹函數的編譯與執行。
第7章介紹面向對象。本章介紹面向對象相關的實現,主要包括類、對象的內部實現。
第8章介紹命名空間。本章介紹PHP中命名空間的實現,這部分內容比較簡單,命名空間只涉及編譯階段。
第9章介紹基礎語法的實現。本章主要介紹PHP中基礎語法的實現,比如條件分支、循環結構、中斷跳轉、靜態變量、常量、全局變量、文件加載等,這些語法涉及PHP的編譯、執行,它們是PHP語言的基礎組成部分。通過對本章的學習,你可以更全面地掌握PHP語言的實現。
第10章介紹擴展開發。本章的內容偏向應用性,主要介紹擴展開發中常用的一些接口、宏。
勘誤與支持
因個人水平有限,以及時間比較倉促,書中難免有不足之處,還望讀者批評指正。如果你對本書有比較好的建議或對書中內容有所疑惑,可與我聯系。
致謝
首先感謝PHP7的主要開發者鳥哥與PHP社區的其他開發者,正是他們的智慧造就了PHP,期待未來PHP能夠有更加廣闊的發展空間。在這里尤其要感謝Swoole的創始人韓天峰老師,本項目有幸得到韓老師的推薦,得到了眾多人的關注。另外要單獨感謝陳曉猛編輯,在他耐心地指導、審稿、修改工作下,最終才有了本書的誕生。

秦朋
內容簡介:

PHP作為流行的語言之一,自第一個版本發布至今的二十幾年里經歷了多次重大改進,PHP7版本最大的特色在于其性能上的突破,比PHP5快了一倍。目前PHP7已經得到了廣泛應用,越來越多的項目從PHP5遷移到了PHP7。目前,關于PHP內核的資料非常有限,本書以當前流行的PHP7版本為基礎,系統性地、盡可能詳細地介紹PHP語言底層的實現,旨在幫助更多的開發者進一步理解PHP,參與到PHP的實現中,為未來PHP的發展貢獻一份力量!全書內容主要包括PHP數據類型的實現、PHP的編譯及執行、PHP內存的管理、函數及面向對象的實現、PHP基礎語法的實現,以及PHP擴展的開發。

目錄:

第1章 PHP基礎架構
1.1 簡介
1.2 安裝及調試
1.3 PHP7的變化
1.4 PHP的構成
1.5 生命周期
1.6 小結
第2章 SAPI
2.1 Cli
2.1.1 執行流程
2.1.2 內置Web服務器
2.2 Fpm
2.2.1 基本實現
2.2.2 Fpm的初始化
2.2.3 worker——請求處理
2.2.4 master——進程管理
2.3 Embed
2.3.1 實現
2.3.2 使用
2.4 小結
第3章 數據類型
3.1 變量
3.1.1 變量類型
3.1.2 內部實現
3.2 字符串
3.3 數組
3.3.1 基本實現
3.3.2 散列函數
3.3.3 數組的初始化
3.3.4 插入
3.3.5 哈希沖突
3.3.6 查找
3.3.7 擴容
3.4 引用
3.5 類型轉換
3.5.1 轉換為NULL
3.5.2 轉換為布爾型
3.5.3 轉換為整型
3.5.4 轉換為浮點型
3.5.5 轉換為字符串
3.5.6 轉換為數組
3.5.7 轉換為對象
3.6 小結
第4章 內存管理
4.1 變量的自動GC機制
4.1.1 引用計數
4.1.2 寫時復制
4.1.3 回收時機
4.2 垃圾回收
4.2.1 回收算法
4.2.2 具體實現
4.3 內存池
4.3.1 內存池的初始化
4.3.2 內存分配
4.3.3 系統內存分配
4.3.4 內存釋放
4.4 線程安全
4.4.1 TSRM的基本實現
4.4.2 線程私有數據
4.4.3 線程局部存儲
4.5 小結
第5章 PHP的編譯與執行
5.1 語言的編譯與執行
5.1.1 編譯型語言
5.1.2 解釋型語言
5.2 Zend虛擬機
5.2.1 opline指令
5.2.2 zend_op_array
5.2.3 zend_execute_data
5.2.4 zend_executor_globals
5.3 PHP的編譯
5.3.1 詞法、語法解析
5.3.2 抽象語法樹編譯
5.3.3 pass_two()
5.4 PHP的執行
5.4.1 handler的定義
5.4.2 調度方式
5.4.3 執行流程
5.4.4 全局execute_data和
opline
5.5 運行時緩存
5.6 Opcache
5.6.1 opcode優化
5.6.2 JIT
5.7 小結
第6章 函數
6.1 用戶自定義函數
6.1.1 語法解析
6.1.2 抽象語法樹的編譯
6.2 內部函數
6.3 函數的調用
6.4 函數的執行
6.5 小結
第7章 面向對象
7.1 類
7.1.1 常量
7.1.2 成員屬性
7.1.3 成員方法
7.1.4 類的編譯
7.1.5 內部類
7.1.6 類的自動加載
7.2 對象
7.2.1 對象的創建
7.2.2 非靜態成員屬性的讀寫
7.2.3 對象的復制
7.2.4 對象的比較
7.2.5 對象的銷毀
7.3 繼承
7.3.1 常量的繼承
7.3.2 成員屬性的繼承
7.3.3 成員方法的繼承
7.4 動態屬性
7.5 魔術方法
7.6 小結
第8章 命名空間
8.1 概述
8.2 命名空間的定義
8.3 命名空間的使用
8.3.1 use導入
8.3.2 動態用法
8.4 小結
第9章 PHP基礎語法的實現
9.1 靜態變量
9.2 常量
9.2.1 const
9.2.2 define()
9.3 全局變量
9.3.1 全局變量符號表
9.3.2 全局變量的訪問
9.3.3 全局變量的銷毀
9.3.4 超全局變量
9.4 分支結構
9.4.1 if
9.4.2 switch
9.5 循環結構
9.5.1 while
9.5.2 do while
9.5.3 for
9.5.4 foreach
9.6 中斷及跳轉
9.6.1 break/continue
9.6.2 goto
9.7 include/require
9.8 異常處理
9.8.1 PHP中的try catch
9.8.2 內核中的異常處理
9.9 break/continue LABEL語法的
實現
9.10 小結
第10章 擴展開發
10.1 擴展的內部實現
10.2 擴展的構成及編譯
10.2.1 腳本工具
10.2.2 擴展的編寫步驟
10.2.3 config.m4
10.3 鉤子函數
10.3.1 模塊初始化階段
10.3.2 請求初始化階段
10.3.3 請求結束階段
10.3.4 post deactivate階段
10.3.5 模塊關閉階段
10.4 全局資源
10.5 ini配置
10.6 函數
10.6.1 內部函數注冊
10.6.2 函數參數解析
10.6.3 引用傳參
10.6.4 函數返回值
10.6.5 函數調用
10.7 Zval的操作
10.7.1 zval的創建及獲取
10.7.2 變量復制
10.7.3 引用計數
10.7.4 字符串操作
10.7.5 數組操作
10.8 常量
10.9 面向對象
10.9.1 內部類注冊
10.9.2 成員屬性
10.9.3 成員方法
10.9.4 常量
10.9.5 類的實例化
10.10 資源
10.11 小結
序: