PHP7 與 PHP5 之最大的不同,在於核心結構的 zval 大改版,連帶的 zval 取值所有 macro 也都一起改變了,以至於 PHP5 可使用的 Extension 需整個改寫,才可以在 PHP7 上正確執行,而無法單純只使用 C Macro 來向後相容。
筆者最近在研究 php7 的 getter method 優化,因此稍微更進一步的研究了 Zend Engine 的運作與修改
To create an extension, you will need at least three files:
兩週前找機會實作了 PHP7 的擴展 (Extension) — reducer — 一個用來在 PHP Runtime 將資料 Group By 的擴展。
大家都知道 PHP7 將 zval 結構徹底改版重構,得以改進記憶體的使用以及大量的效能改善。寫這篇文章前,筆者稍微查了一下,發現 laruence 已經在 GitHub 上寫了 深入理解PHP7之zval ,有很多細節已經寫在該篇文章中,本來想寫一大篇的雄心大志也就這樣少掉了一半。因此寫這篇文章主要是用來幫助初學者快速理解 PHP7 的 zval…
敎召的時候一直在想這個…
以前 Perl 有 PSGI,但 PHP 先天不良,所以一直沒有堪用的 PHP 實作的 HTTP Server 。隨著時間流逝,libevent, libev, libuv 等 event-driven library 不斷大量的應用在各領域,PHP 的 libevent extension 也逐漸穩定成熟,所以決定也來發起一個 PHPSGI (derived from PSGI),真心希望能用 PHP 實作一個可靠又高效的 HTTP Server 呀!所以在通勤時間寫了這個 PHPSGI…
一直以來,我心中有一個疑問,就是 JIT compilation 為何一直難以在 Perl 或 PHP (Zend Engine) 這類 3P Language 中實現?繼 LLVM 開源後,陸續聽到許多 Language VM 嘗試整合 LLVM 試驗並得到很好的測試數據,卻一直沒有被整合到正式版本中,原因究竟為何?而 Lars Bak 帶領團隊開發的 V8 — JavaScript JIT Compiler 卻在幾年內直接成功達陣。
Zend Hash is the core internal data structure for manipulating class property, array, globals…
OK, Since you’ve already knew how to “reset”, “foreach”, “next” the hash of a PHP array. We can take a…