1、百度搜索研發部:
http://stblog.baidu-tech.com/?p=763
深入PHP使用技巧之變量
http://stblog.baidu-tech.com/?p=1221
PHP性能:
http://stblog.baidu-tech.com/?p=1343
在C/C++等能夠在靜態編譯階段確定的變量、函數,在PHP中需要在動態運行中確定,也就決定了PHP中間碼不能直接運行而需要運行在Zend Engine上。
CGI解釋器的反復加載是CGI性能低下的主要原因,如果CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、Fail- Over特性等等。
FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行着,只要激活后,不會每次都要花費時間去fork一次(這是CGI最為人詬病的fork-and-execute 模式)。它還支持分布式的運算, 即 FastCGI 程序可以在網站服務器以外的主機上執行並且接受來自其它網站服務器來的請求。
FastCGI子進程完成處理后將標准輸出和錯誤信息從同一連接返回Web Server。當FastCGI子進程關閉連接時,請求便告處理完成。FastCGI子進程接着等待並處理來自FastCGI進程管理器(運行在Web Server中)的下一個連接。 在CGI模式中,php-cgi在此便退出了。
在上述情況中,你可以想象CGI通常有多慢。每一個Web請求PHP都必須重新解析php.ini、重新載入全部擴展並重初始化全部數據結構。使用FastCGI,所有這些都只在進程啟動時發生一次。一個額外的好處是,持續數據庫連接(Persistent database connection)可以工作。
FastCGI的不足
因為是多進程,所以比CGI多線程消耗更多的服務器內存,PHP-CGI解釋器每進程消耗7至25兆內存,將這個數字乘以50或100就是很大的內存數。
2、PHP底層工作原理
http://blog.csdn.net/21aspnet/article/details/6973405
3、理解:
Php的四層體系包括:zend引擎,Extensions,sapi,上層應用。
zend引擎:整體用純C開發,主要將PHP代碼翻譯成為opcode,實現了基本的數據結構(如hashtable、oo)、內存分配及管理、提供了相應的api方法供外部調用
Extensions:常見的各種內置函數(如array系列)、標准庫等都是通過extension來實現,用戶也可以根據需要實現自己的extension以達到功能擴展、性能優化等目的
sapi:Server Application Programming Interface,也就是服務端應用編程接口,sapi通過一系列鈎子函數,使得php可以和外圍交互數據
上層應用:我們編寫的php程序