9 月 5 2013
PHP 樣板引擎(templating engines)
翻文件翻到這篇。
雖然時間有點久了(2009 年的文章),但我覺得該文仍具參考價值。
該文裡面提到了一些樣板引擎;排除已經不存在的 Calypso,目前仍存在的有這些:
該文作者沒提到 Template Lite、Zend View,倒是給了些數據。
網路上有許多 Smarty 2、Smarty 3、Dwoo 的效能評測資訊,由快至慢列舉的話,幾乎都是 Dwoo -> Smarty 2 -> Smarty 3。
但是 Dwoo 已經宣告 EOL 了。官方網站直接放上這段文字:
Important Notice – Dwoo End Of Life
This library is not being maintained anymore for quite a while, so if you are starting a new project you should consider using Twig instead.
Twig 官方的安裝文件給了數種安裝方式,不知道文章作者用的是哪一種。
( 如果是 compile 成 PHP extension 的話,效能肯定是比較好的呀… )
PS. Twig 的 for … in … 挺有趣啊,我看到 Perl 的影子。
9 月 27 2013
[PHP] HTTP 連線的資料共用
我相信有許多 Web 應用程式開發者與我類似,常常想辦法預存一些經常存取、變動頻率不高的資料,提昇程式效能。
透過這類的資料預存,可以降低資料庫存取頻率,並減少 server 的 file I/O 次數。
在 .Net 與 JAVA 的領域,程式語言都提供了相關的物件/變數,讓 Web 應用程式儲存資料,而該應用程式的所有連線使用者皆可以存取。
.Net 用的是 System.Web.Caching.Cache;JAVA Servlet 是 javax.servlet.ServletContext,而 JSP 的 Application 物件便是其實作。
但在常見的環境(eg. Apache HTTPD w/MPM prefork + mod_php),也沒有額外的模組(eg. APC、memcache),PHP 難以提供這種物件/變數讓人使用,開發者只能硬幹。 :p
因為 COOKIE 的 size 有限,在 PHP 大概只能用 SESSION 硬幹。
我是這樣做的…
存入/更新:
讀取:
因為所有程式都能存取 session 內的資料,不建議在 session 內儲存私密/機密資料。
若要避免資料不小心被同一台 server 的其他程式,可以加上 session_name() 作區隔。
By Joe Horn • PHP • • Tags: javax.servlet.ServletContext, performance, PHP, session, System.Web.Caching.Cache