發表文章

目前顯示的是有「CodeIgniter」標籤的文章

Disallowed Key Characters發生原因及處理

圖片
如有使用 CodeIgniter Web Framework 的經驗,也許會遇到disallowed key characters錯誤的經驗。會出現這樣的訊息,是因為 CodeIgniter 會檢查client端送來的cookie名稱。 如果先不分析問題發生原因、想馬上解決,可下手調整判斷程式的正規表達式即可

孝子山步道-孝子山、慈母峰、普陀山

圖片
孝子山步道-孝子山 拍攝於上慈母峰時的稜線石階 位於平溪的孝子山步道,共有三個山頭,分別為孝子山、慈母峰、普陀山。這步道非常符合『山不在高.有仙則名.水不在深.有龍則靈』這句話。因為…步道算是輕鬆路線,可是要登上孝子山、慈母峰、普陀山卻都需要先經過驚險刺激的稜線路線。當中,以陡峭的孝子山最刺激…特別是對有懼高症的人而言…(我看我那些沒懼高症的朋友,都一派輕鬆自在) 去年第一次造訪孝子山步道時,站在懸空的鐵梯前無法克服那莫名的懼高唯獨放棄孝子山。今年五月再度造訪時終於在恐懼中登上孝子山。接者又去造訪了 瑞芳小錐麓-小鬼瀑布 。想說更刺激的 瑞芳小錐麓-小鬼瀑布 都走過了,孝子山應該更容易了吧?所以…又來了… 註: 瑞芳小錐麓-小鬼瀑布 相較於孝子山,因為沿途無可抓的繩索,相形之下比較危險、刺激 這次依舊是由產業道路盡頭的登山口開始(去年是由106線道旁觀音禪寺登山口開始),由此開始約15分鐘後即可到孝子山、慈母峰、普陀山三岔路。

Codeigniter搭配Apache及PHP-FPM

最近想將使用CodeIgniter這套php framework的系統改用 PHP: FastCGI Process Manager (FPM) 運行。 由於採用了CodeIgnite官方 CodeIgniter URLs : CodeIgniter User Guide 的作法,於網址中移除index.php。因此,當設定好 PHP-FPM 後,尚須處理移除index.php這段設定。 另外,也由於apache的版本演進,不同版本配合 PHP-FPM 的設定方式也有所不同,找資料過程中看過很多種設定。因此把最後採用的設定方式做個紀錄。

codeigniter與MySQL server has gone away

最近在做一個處理,於CLI下程式會下指令給splunk撈取資料,並等候splunk回覆結果。最後再將結果寫入資料庫。當查詢大量的資料時,等待splunk的時間會變長。 原本程式運作很正常,但在我重構程式調整操作DB的方式,以符合線上環境使用後,看log卻發現有時居然會出現了以下的錯誤… A Database Error Occurred Error Number: 2006 MySQL server has gone away 查了一下mysql官方文件,相關資料如下… http://dev.mysql.com/doc/refman/5.0/en/gone-away.html http://dev.mysql.com/doc/refman/5.0/en/error-messages-client.html#error_cr_server_gone_error 看了說明,我遇到的狀況和time out比較相同。和DBA討論、測試後…果然沒錯…就把問題給解決了~ 先說明我做了什麼修改,導致遇到此狀況?

CodeIgniter的Connecting to Multiple Databases,是否會造成大量連線數?

最近有人問了一個關於 CodeIgniter 的資料庫連線問題。問題是,當一個controller執行時,可能呼叫多的model。如果這些model在開資料庫連線時,全都採用"Connecting to Multiple Databases"的方式,豈不是一個網頁就會產生多個資料庫連線? CI採用singleton pattern。但"Connecting to Multiple Databases"的模式,卻是return instance。所以,這個疑問是有可能發生的。於是測試了一下… 做了一個小實驗。寫一個controller,他會呼叫三個不同的model。這三個model都採用"Connecting to Multiple Databases"方式,都連到同一台資料庫。如此,該資料庫上是不是就會有三個連線? 用var_dump()看每個連線,果然每個連線的resoure id都不同(共三個)。但直接在資料庫上看連線數,卻只有一個。這樣的結果蠻奇怪的。想了一下,原來是和php開啟資料庫處理方式有關。 我這次測試,使用兩種資料庫-Sybase、MSSql。兩者的狀況分別如下…

PHP CodeSniffer整合Subversion

設定好 PHP CodeSniffer 後,接者就要和版本控制整合。當開發團隊的成員在commit程式碼時,即時讓 PHP Sniffer 做檢查,確定程式有依照規範開發。 以整合 Subversion 為例。官方網站 Using the Subversion pre-commit Hook 這篇文章就寫得非常清楚,照者文件作即可。基本上,就是配合 Subversion 的pre-commit hook。在commit前呼叫 PHP CodeSniffer 做檢查,如果有不符合規範,就不讓此次的commit完成。 如果不熟悉 Subversion 的pre-commit hook如何使用,請參閱SVN官方的說明 Repository Hooks pre-commit 。 在實務上,只有一個設定需要稍微注意。適當的調整參數 --report-width ,以配合自己所用的開發工具(IDE),取得最佳的視覺呈現。以我測試的例子,我採用的標準為 CodeIgniter-for-PHP_CodeSniffer 。所以我在 Subversion 的 pre-commit hook 中,做下面的設定…

PHP CodeSniffer進階使用-新增CodeIgniter格式

安裝好 PHP_CodeSniffer ,內建有五種coding standards。如果您使用其中一種,就可以馬上使用了。 MySource PEAR PHPCS Squiz Zend 如果不是上述五種,需要增加其他的coding standards,該怎麼辦?喜歡自己動手做,可以參考官方文件 - Coding Standard Tutorial 自己做一套。也可以找別人寫好的…以 CodeIgniter - General Style and Syntax 為例,可以下載 CodeIgniter-for-PHP_CodeSniffer 安裝使用。 安裝方式很簡單,將 CodeIgniter-for-PHP_CodeSniffer 解壓縮到 PHP_CodeSniffer 存放coding standards的目錄下即可。 完成上述步驟,基本上 PHP_CodeSniffer 就可以使用 CodeIgniter的風格 作為檢查的依據。 不幸的, CodeIgniter-for-PHP_CodeSniffer 直到目前(2011/09)的版本是以CodeIgniter 1.7.x 的風格為依據,所以會有一些誤判…

將getID3包成CodeIgniter的library

如何將 getID3 包成 CodeIgniter 的library,讓 CodeIgniter 呼叫、使用呢? getID3 的程式已經是一個class,因此,步驟就很簡單了… 將 getID3 的主程式,複製到 application/libraries (有需要的話,請自建目錄) 如官方文件 Creating Libraries 中所述的規則,將getid3.php的檔名改為Getid3.php 找出下面程式碼做修改。以我測試用的 getID3 版本 - stable version: 1.9.0 (1.9.1-20110810)為例。下面程式位於第69行附近…

如何升級CodeIgniter 2.0

php framework - CodeIgniter 2.0 已經出了一陣子了。後續幾個月內,很快的變更到2.0.2。因為他新增一些功能,非常符合開發上的管理。另外,對於安全性也有更多的著墨。於是,最近開始做升級的動作。將由原本所使用的1.7.3升級到2.0.2。 如何升級到CodeIgniter 2呢?官方網站有些資訊可以參考,內容主要分為兩類。一是版本功能變化?另一個則是如何升級!建議下面的網址內容一定要先看過,心有餘力… 建議還是花個幾小時看一下完整的說明文件,就可以充分瞭解CodeIginter 2.x 的好處~ 說真的,CodeIgniter的文件,真的是少見的簡潔又清楚~ (K 過不少文件,很少像CodeIgniter可以在一天內看完的) 版本變更記錄 Change Log(原文) 版本紀錄(正體中文) 升級注意事項 (下面僅列出 1.7x 到 2.x,其實還有每一小版本的升級說明) 從 1.7.3 升級到 2.0.0(正體中文) Upgrading from 1.7.2 to 2.0.0(原文) 如果,沒改過CodeIginter的核心程式,升級步驟就如同上面所述,如此的簡單…