由於 stickeraction 的關係, 貼出去的貼紙讓我的主機流量暴增, 覺得這樣下去這個月的 100G 流量一定會爆, 所以對於貼出去的貼紙做了一些處理, 讓瀏覽器快取住, 多少可以減少一些流量, 其實一開始就該做了 XD 只是沒有意識到, 完全沒有經驗 XD 而且工作上也比較沒有流量的考量, 所以這次也學到了些東西。
原本在主機上就都有設定 lighttpd, 讓圖片, js 跟 css 檔產生 etag、expire 跟 last modified … 等的 HTTP headers, 利用瀏覽器的快取機制來減少主機的流量。 不過由 PHP 產生的圖片完全沒有 cache, 今天才改了一下程式, 加上一些 header, 來減少流量的支出, 不然這個月主機流量穩爆 ~”~
閱讀全文 »
Kohana 前身叫做 BlueFlame, 是由 CodeIgniter 衍生出來的 PHP framework, 所以要從 CI 跳槽還滿快的 XD 而 Kohana 跟 CodeIgniter 最大的不同就是, Kohana 只能在 PHP 5 上跑。 不過其實… 現在都該換到 PHP5 了啦:p 重點是! Kohana 解決了 CodeIgniter 很多不足的地方。
像是 Namespace 的問題, 在 CI 上如果有相同名稱的 library、Model 或是 Controller 就會衝到, Kohana 則解決了這個問題。 另外在 CI 上如果有自定的 helper 的話, 其他維護者並不容易找出是寫在哪支 helper 裡, 而 Kohana 的 helper 是用 class 來作, class name 的 prefix, 則可以容易辨識出是哪支 helper, 也減少 function name 衝突的問題, 對於維護上方便很多。
另外 Kohana 也提供了 module 的機制, module 擁有自己的 controller, model 跟 view, 可以將程式劃分的更細。例如 Konaha 本身就提供了 Auth module (ACL)。 雖然 CI 也有 matchbox 提供了相同的功能, 但是需要 override CI_Loader, 萬一 CI 的版本升級, CI_Loader 有所改變呢? 當然還是比不上 Kohana 內建的好。
閱讀全文 »
今天看到前幾天才出爐的測試, PHP framework comparison benchmarks, 其實應該就是在比 framework 的結構跟設計對於效能的影響?
| |
Run 1
|
Run 2
|
Run 3
|
Run 4
|
Average
|
| Baseline HTML |
1327.5
|
1326.5
|
1328.6
|
1329.1
|
1327.9
|
| Baseline PHP |
331.6
|
332.1
|
331.4
|
332.0
|
331.8
|
| CakePHP |
3.6
|
3.7
|
3.8
|
3.5
|
3.7
|
| CodeIgniter |
21.5
|
21.2
|
21.7
|
21.7
|
21.5
|
| Zend Framework |
9.3
|
9.1
|
9.2
|
9.3
|
9.2
|
這篇文章中比較了 CakePHP, Zend Framework 跟 CodeIgniter, 然後還有一般的 html 及 plain php, 另外還有使用/不使用 APC 跟 eAccelerator 來比較這三個 framework 的效能。當然, 基本上一定是 html 最快, 然後是 plain php, 再來才會是 framework。而 Framework 中當然最快的是 CodeIgniter 啦! 接著是 Zend Framework, 最後是效能很糟的 CakePHP ( XD )
閱讀全文 »
看了 The future of PHP 這一篇後, 來記錄一下, 關於 PHP 6 的改變, 主要是有些東西會拿掉, 現在應該就要避免去用到, 不過其實也應該沒什麼人在用了吧? XD
簡單來說就是 PHP6 增進了下面這兩點
Improved Unicode support
Namespaces (PHP 5.3 已經有了)
然後下面是 PHP6 會拿掉的東西
magic_quotes
register_globals
register_long_arrays (像是: $HTTP_*_VARS)
safe_mode
PHP tags (asp style) (像是 <% %>)
FreeType 1 and GD 1
ereg
今天在作處理、轉換 csv 的東西, 碰到一個 UTF-8 的 csv 檔, 結果轉換出來的檔案因為 BOM 掛點。下面這一段可以用來將 BOM 去掉。
之前在 Tsung 那邊看到 大量檢查 PHP 程式是否有 Syntax Error 這一篇文章, 後來每次想到要檢查的時候, 都因為這一段太長記不下來 XD 所以我每次就又都從 Google 找這篇文章, 今天想說把它寫下來, 寫成一個 shell script 好了 XD
我把檔名叫 phplint
在 chmod +x phplint 之後, 在想要檢查的目錄打 phplint 就可以了。
基本上我是在自己的 home 有開一個 bin 的目錄, 然後再 .bashrc 裡加上
之前的 twit shell script 也是這麼作 :p
如果這一陣子因為 Ruby 跟 RoR 的爆紅, 讓你急著想轉換到 Ruby (好吧! 至少我偷學了 Ruby XD) 也許可以看看 CIO 的這一篇 You Used PHP to Write WHAT?! 的 comments。 由於文章中提到的一些論點讓 PHP的擁護者倒彈, 像是…
Q: When should you use PHP?
A: Prototyping an application that will be converted to Java or some other language.
或是
For large enterprise solutions, PHP makes a great prototyping or feasibility tool, but heavily loaded sites that require thread safety, security and stability should use Java.
結果因為這篇作者的言論, 似乎有點瞧不起 PHP, 導致 comments 被 PHP 擁護者洗版, 結果最後在這篇文章中多了下面這一段 XD
閱讀全文 »
最近在研究 Capistrano 這個東西, 他最主要就是搭配 SVN 來做程式碼自動部署(auto deployment)的工作, 如果程式碼都用 SVN 來作版本控制的話, 那麼會方便很多。基本上, Capistrano 是 RoR 用來做自動部署的程式, 不過在看過許多文章之後, 其實也可以拿來用在其他程式的部署上。
簡單的來説, Capistrano 就是可以讓你很方便的透過 ssh 在遠端執行指令。所以說沒辦法遙控 Windows XD
先來說說安裝吧! 首先就是要安裝 Ruby 啦! 把原始碼抓回來安裝啦! (以下當然不會是 Windows 的做法 XD)
./configure ; make ; make install
接著是裝上 RubyGem, 抓回來用下面的指令安裝
ruby setup.rb
然後就可以用 RubyGem 來安裝 Capistrano 啦! 加上 -y 的參數, 是說, 會裝上其他相依的 ruby gem。
gem install -y capistrano
然後因為某種原因, 會出現某個訊息, 不過玩 Ruby 的才需要知道, 就不說為什麼了 (因為我也不知道阿, 反正裝玩就不會在出現那一段訊息就是了 XD)
gem install fastthread
到這裡就大功告成啦!! Capistrano 安裝完畢!! 之後再來寫篇發佈 PHP 程式的心得 :p
因為上週末我掰咖了, 所以都在房間裡看書, 看電影。我把 iWoz 這本書看完了, 也看了門徒, 看了 Linda Linda Linda, 然後一整天都在吃泡麵 XD 也玩了一下 Zend Framework(以下簡稱 ZF), 試用一下可不可以單獨拿 ZF 其中的元件來用, 因為 ZF 的文件看起來好像可以這麼做。
在開始之前, 由於 ZF 只能在 PHP5 上面跑, 而我的 Mac OS X 預設的環境是 Apache 1.3 + PHP4, 所以我找到了這裡, 可以下載包好給 Mac 用的 PHP5 binary 套件, 很方便! 裝完只要 restart apache 就好了!
OK! 首先先下載 Zend framework, 然後我是解開放到
/usr/local/php5/lib/php/Zend
接著設定 php.ini 的 include_path, 加入 /usr/local/php5/lib/php/Zend/library, 變成
include_path = “.:/usr/local/php5/lib/php/Zend/library”
接著參照 ZF 的文件, 試一下 Zend_Service_Delicious 這個元件, 寫一小段程式如下, 哈! 馬上就可以列出我在 del.icio.us 裡的書簽 title, 真方便!
閱讀全文 »
由於最近一直在 porting , 不只是為了好玩, 也是未來的趨勢, 所以採用了 framework 來作 porting 的動作, 其實一開始對於 framework 可以做到的事情, 有點感到驚訝! 一開始 porting 還滿好玩的, 但是相較於單純只是要將 view 跟 code 分離來說, 原本應該會採用 Smarty, 那麼我就可以很輕鬆的把這個程式 port 完, 不過在先前就一直有在 survey 一些 PHP framework, 所以這次才就直接衝了, 選用 CodeIgniter 這個 framework 來做 porting!
閱讀全文 »