2008年11月20日
[心得] 與大師相遇-PHP教父談理想網路環境(台大場)
前天去聽了 PHP 之父 Rasmus Lerdorf 的演講: Simple is Hard ,感覺還不賴。也意外發現自己的英聽還算及格,不過也可能是大師沒有用到什麼深奧詞彙的關係 :P
投影片在此:台大場
以下簡單講一些我覺得有興趣的部份:
Siege
Siege 是一套很有趣的工具,它可以幫我們測量出 HTTP 回應的效能。 Rasmus Lerdorf 在前半段介紹中大量使用它來查看程式修改前後的效率,感覺還不賴。
可惜它沒有 Windows 版本,你必須在 Unix-Like 系統上編譯使用。
檔案引入路徑
預設 php.ini 上的 include_path 都是把「 . 」 (也就是當前目錄) 放在 include_path 的最前面,使得我們在用 include 或 require 時會從當前目錄先尋找要引入的檔案。
為了不讓 PHP 程式在執行時,花費太多時間去尋找引入檔案, Rasmus Lerdorf 建議當前目錄把放在 include_path 的最後面。
這樣一來 PHP 引擎會先從指定的位置開始找要引入的檔案,而不是從當前目錄先找起。
找出相依的類別
安裝 PECL 的 included 套件,可以幫我們找出程式引用了哪些類別,而且還能圖形化顯示。
另外這裡有個重點就是,找出相依的類別後,最好改用 require 來取代 require_once 。
KCacheGrind
KCacheGrind 是一個可以顯示程式流程所佔的百分比或執行時間的工具,而且還是圖形化顯示;而解析的檔案就是 Xdebug (PHP) 或 valgrind (C) 產生的 profile 檔。
在 Windows 下有類似的工具稱為 WinCacheGrind ,但沒有圖形化顯示。
預設時區
PHP5 以後有預設時區的設定,如果我們在 php.ini 中強制設定的話,就能夠加速程式的運作。 (?)
引用 steve 的說明:
整段意思說 要coding的時候避免任何錯誤或警告
不管有沒有設定要顯示或關閉任何顯是錯誤
只要有錯誤或警告 都會減緩執行速度(要處理錯誤)
不要用 HTML 的 onxxxx 事件
因為 onxxxx 事件會透過 JavaScript 的 eval 來解釋裡面的內容,而「 ' 」就會被解釋成「 ' 」 (單引號) ;因此就算有做 htmlspeicalchars 也是沒用的。
後記
在寫這篇文章的時候, Mark 跟我說其實他比較想知道 Rasmus Lerdorf 對 PHP 未來的發展有什麼看法,而不是講這些很底層的東西。
我個人倒覺得是有一些收獲,至少我光看投影片看不出什麼鬼就是 :P
但我也覺得內容跟主題「與大師相遇-PHP教父談理想網路環境」有些偏差,但仍不失為一場有深度的演講。
另外 kiang 也在他的網站上寫了一些摘要,和我有興趣的部份不太一樣,大家不妨也參考看看。

預設時區
大師意思說...
因為PHP5 以後要設定預設時區(很多function都會用到) 如果沒設定
你會看到 錯誤提示WARNING
整段意思說 要coding的時候避免任何錯誤或警告
不管有沒有設定要顯示或關閉任何顯是錯誤
只要有錯誤或警告 都會減緩執行速度(要處理錯誤)
@steve
感謝說明啦~ :)
這段我果然還是聽不太懂。
