PHP7內核剖析epub

圖書網
9646
文章
1255
評論
2020年1月4日12:17:28 評論 35閱讀13分50秒
摘要

適讀人群 :本書適用于有一定C語言基礎的PHP高級工程師,或者想了解PHP7的內部實現、擴展開發的工程師。
基于PHP7,深刻揭示內核原理
內容翔實,詳細介紹PHP語言底層的實現
助力開發者進一步理解PHP,參與到PHP的實現中

PHP7內核剖析 作者:秦朋

PHP7內核剖析 出版社: 電子工業出版社

PHP7內核剖析 內容簡介

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

PHP7內核剖析 目錄

第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 小結

PHP7內核剖析 精彩文摘

本章將簡單介紹PHP的基本信息,以及PHP的安裝、調試,同時將介紹PHP生命周期中的幾個階段,它們是PHP整個流程中比較關鍵的幾個階段。

1.1 簡介

PHP是一種非常流行的高級腳本語言,尤其適合Web開發,快速、靈活和實用是PHP很重要的特點。PHP自1995年由Lerdorf創建以來,在全球得到了非常廣泛的應用。

PHP在1995年早期以Personal Home Page Tools(PHPTools)開始對外發表第一個版本,Lerdorf寫了一些介紹此程序的文檔,并且發布了PHP1.0。在這早期的版本中,提供了訪客留言本、訪客計數器等簡單的功能,之后越來越多的網站開始使用PHP,并且強烈要求增加一些特性,在新的成員加入開發行列之后,Rasmus Lerdorf在1995年6月8日將PHP公開發布,希望可以通過社群來加速程序開發與尋找錯誤。這個版本被命名為PHP2,已經有了今日PHP的一些雛型,類似Perl的變量命名方式、表單處理功能,以及嵌入到HTML中執行的能力。程序語法上也類似Perl,有較多的限制,不過更簡單、更有彈性。PHP/FI加入了對MySQL的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年年底,有15000個網站使用了PHP。

在1997年,任職于Technion IIT公司的兩個以色列程序設計師Zeev Suraski和Andi Gutmans重寫了PHP的解析器,成為PHP3的基礎,而PHP也在這個時候改稱為PHP:Hypertext Preprocessor,1998年6月正式發布PHP3。Zeev Suraski和Andi Gutmans在PHP3發布后開始改寫PHP的核心,這個在1999年發布的解析器被稱為Zend Engine,他們也在以色列的Ramat Gan 成立了Zend Technologies 來管理PHP的開發。

在2000年5月22日,以Zend Engine 1.0為基礎的PHP4正式發布。2004年7月13日發布了PHP5,PHP5則使用了第二代的Zend Engine。PHP包含了許多新特色:完全實現面向對象,引入PDO,以及許多性能方面的改進。目前PHP5.x仍然是應用非常廣泛的一個版本。

PHP獨特的語法混合了C、Java、Perl及PHP自創新的語法,同時支持面向對象、面向過程,相比C、Java等語言具有語法簡潔、使用靈活、開發效率高、容易學習等特點。

●開源免費:PHP社群有大量活躍的開發者貢獻代碼。

●快捷:程序開發快,運行快,技術本身學習快,實用性強。

●效率高:PHP消耗相當少的系統資源,自動gc機制。

●類庫資源:有大量可用類庫供開發者使用。

●擴展性:允許用戶使用C/C++擴展PHP。

●跨平臺:可以在UNIX、Windows、Mac OS等系統上使用PHP。

很多人認為PHP非常簡單,沒什么技術含量,這是非常片面的認識,任何語言都有其存在的價值、有其適合的應用領域,正是PHP底層的強大才造就了PHP語言的簡潔、易用,這反而更能夠提現出它的優秀所在。

1.2 安裝及調試

在學習PHP內核之前,首先需要安裝PHP,以方便在學習過程中進行調試。本書使用的PHP版本為7.0.12,下載地址為//php.net/distributions/php-7.0.12.tar.gz,下載后使用以下命令進行編譯、安裝:

——enable-debug 參數為開啟debug模式,方便我們進行調試。關于調試自然少不了gdb了,PHP內核的實現雖然比較復雜,但是階段劃分比較鮮明,可以通過gdb在各個階段設置斷點,然后進行相應的調試。學習內核時,可以使用Cli 模式,因為它是單線程的,方便調試,這并不影響我們對內核的學習。同時,想要弄清楚PHP內核,自然少不了閱讀PHP的源碼,因此本書后面介紹的內容將會非常頻繁地列舉源碼,而對于一些概念性的解釋則點到為止。本書主要的目的是引導大家自己去閱讀源碼、探索PHP的實現,而不希望只簡單地通過書中的描述來了解PHP,所以希望大家在閱讀本書時,一定要準備好一份源碼以便隨時查看和調試。

1.3 PHP7的變化

PHP7與PHP5版本相比有非常大的變化,尤其是在Zend 引擎方面。為提升性能,PHP7對Zend進行了深度優化,使得PHP的運行速度大大提高,比PHP5.0~5.6快了近5倍,同時還降低了PHP對系統資源的占用。

下面介紹PHP7比較大的幾個變化。

圖書網:PHP7內核剖析epub

恭喜,此資源為免費資源,請先
聲明:本站所有資源收集于互聯網,只做學習和交流使用,版權歸著作人和出版社所有,請在下載后24小時之內自覺刪除,若作商業用途,請購買正版,由于未及時購買和付費發生的侵權行為,與本站無關。本站發布的內容若侵犯到您的權益,請聯系站長刪除,我們將及時處理!
繼續閱讀
  • 我的微信
  • 掃一掃加好友
  • weinxin
  • 微信公眾號
  • 掃一掃關注
  • weinxin
新時期的Node.js入門epub 程序設計

新時期的Node.js入門epub

適讀人群 :適合未接觸過Node的讀者以及在校的學生閱讀,也適合作為高等院校和培訓學校相關專業的師生教學參考 從零開始學習開發完整可用的項目,掌握語言細節并獲得實際經驗 以實際應用...
深度學習實踐 計算機視覺epub 程序設計

深度學習實踐 計算機視覺epub

深度學習實踐 計算機視覺 作者:繆鵬 深度學習實踐 計算機視覺 出版社: 清華大學出版社 深度學習實踐 計算機視覺 內容簡介 本書主要介紹了深度學習在計算機視覺方面的應用及工程實踐,以Python 3...
趣味數學及編程拓展epub 程序設計

趣味數學及編程拓展epub

趣味數學及編程拓展 作者:楊克昌 趣味數學及編程拓展 出版社: 清華大學出版社 趣味數學及編程拓展 內容簡介 本書開創趣味數學與程序設計的交匯融合。書中精選并提出各類趣味數學問題,突出趣味性與吸引力,...
匿名

發表評論

匿名網友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: