前面一篇,介紹了CodeIgniter的特色,老實說很吸引我,說基本的功能是有了(功能不如Yii或是Symfony ),但是不需要使用Command Line指令(並不是所有的主機都能讓我們下Comand Line指令),對來說,已經夠了(CI的套件擴充也有Command Line功能可以用)。
在使用CodeIgniter(CI)框架來寫程式時,一定要對程式執行的流程所有了解,這樣寫起程式來不僅事倍工半,程式有問題時,抓臭蟲也會快上許多。
接下來,我們就解䆁一下程式執行的流程。
程式執行時,會先去問途程(Routing,大陸翻成路由),如果我們要執行的程式已經有Cache(快取,需設定),就會直返回Cahce的Browser,如果沒有Cache,就會就一些Security檢查(拿掉XSS等攻擊字串~以前我都是自己寫涵式,內建就有真方便),再來就是執行Application Controller(程式控制器)的內容,裝載(Load)Drivers,Models(模型),Libraries(核心涵式庫),Helpers(輔助涵式庫),Packages,Scripts等內容,進行相關的運算,最後與View(視圖)結果,產生Cahce,反迴內容給Browser。
使用Cache(快取)的好處,就是對於變動少的內容,可以減少系統運算的時間,大大的增快執行的速度,但是會耗掉比較多的儲存空間。
CodeIgniter有很多寫好的function(不論是libraries or helper)可以使用,比如說,我們先前要測試載人頁面要花多少時間,一定要建立一個起點,再建一個終點,再把兩 個時間相減,就是頁面載入所需的時間,但是CI把這個的功能寫好了,載入libraries Function之後,只要在View中任何地方,使用下面的個語法,就會自動告訴你,使用了多少時間來載 入。
{elapsed_time}
那我想要知道我用了多少記憶體呢?也很簡單,只要用{memory_usage}這個指令即可。完整的Function可以在各位CI的user guide中找到”Library Reference”。
Helper的載入,是全域的,helper檔案,通常在application/helpers中或在system/helpers中,CI預設會先抓application中的helpers如果找不到,才會抓system/helpers。
Helper預設是不載入的,但是一經載入,就可以全域使用,載入方法很簡單,可以使用下面語法(只需檔名,無需附檔名)。
$this->load->helper(‘helper_name_only’);
載入多個helper時,使用array的方式,語法如下,
$this->load->helper(array(‘helper1′,’helper2′,’helper3’));
另外,我們可以透過修改設定檔方式(application/config/autoload.php),讓CI幫我們自動載入helper,其他的地方就不用再宣告。
自動載入helper,記憶體會佔用比較用多,在未載入helper時,記憶體吃0.9MB,載入date,url,file三個helper時,記憶體吃到1.23MB。
照這樣說來,一隻MVC程式吃掉1.23MB,如果10隻MVC程式呢?也許就好幾10MB,那如果100隻MVC程式呢?如果系統程受大壓力時,要怎麼處理呢?等下有空,我架一台Linux起來。把相關的環境設定好,我再來看看CI跑在Virtual Host上時,資源會不會有爆掉的問題。