Laravel 搭配 Memcached Cross Domain Session

Laravel PHP Framework

Laravel 提供了 filecookiedatabasememcachedarray 五種方式來存取 Session,預設的使用方式會是 file 存取,如果要跨 Domain 存取 Session 基本上只要設定 php.ini 裡面的 Session 相關參數即可,請注意底下 3 個參數。

[Read More]

PHP The Right Way 出電子書

PHP  The… by Phil Sturgeon et al. [Leanpub PDF iPad Kindle

最近看到前 CodeIgniterFuelPHP 作者 Phil SturgeonPHP The Right Way 發起人 Josh Lockhart 合力推出電子書,目前一本定價為 4 塊美金,當然作者也不一定要使用者付錢,您可以直接線上看。這本線上 PDF 很適合丟給剛進來公司的新人,此新人當然對 PHP 有一定程度的了解,團隊內最重視的就是整個專案素質,也就是如果能達到多人維護同一個專案,讓其他人檢視的時候,不會覺得是好多人共同維護一個專案,也就是要求大家寫法一致 (Code Style Guide)。

增加 phpMyAdmin 登入時間

phpMyAdmin 是一套管理 MySQL 資料庫的 UI 介面工具,預設登入時間為 1440 秒,這時間是定義在 libraries/config.default.php 內,phpMyAdmin 也是透過 gc-maxlifetime 來決定 Session 存在與否,所以如果要增加登入時間,比如說設定一年 (3600 * 24 * 365) 好了,請按照底下設定 PHP 設定檔 如果是裝 php-fpm 請修改 /etc/php5/fpm/php.ini 路徑 1 2 3 ;After this number of seconds, stored data will be seen as \'garbage\' and ; cleaned up by the garbage collection process. ; http://php.net/session.gc-maxlifetime session.gc_maxlifetime = 315360000 重新啟動 php-fpm 1 $ /etc/init.d/php5-fpm restart phpMyAdmin 設定檔 修改 config.inc.php 如果找不到此檔案,請複製 config.sample.inc.php 為 config. [Read More]

CodeIgniter 初始化 Library 流程

CodeIgniter

好久沒寫 CodeIgniter 相關文章,這次看到在論壇有人發問 application/libraries 優先權,想說把整個 CodeIgniter 如何讀取 Library 的流程整個寫下來,其實也不會很難,但是就是要照著 CI 定義的規則來命名檔名以及 Class。假設要讀取 Email Library,我們可以透過底下方式讀取

$this->load->library('email');
[Read More]

CodeIgniter 尋找新東家

CodeIgniter

很高興看到 CodeIgniter 出了 2.1.4 版本了,距離上個版本大約 9 個月,但是這次的 Release 只針對 Security 做改善,可以參考 Change Log。然而在今天看到 Ellislab 宣佈找尋 CodeIgniter 新東家,也就是官網不再維護此 Project,希望有新的團隊或公司可以接手,繼續讓 CodeIgniter 發揚光大,在 GitHub 上的 PHP Language 排名上,CodeIgniter 幾乎榜上有名,討論活躍度也是非常高的,但是公司就是找不到任何 Business Model 來支撐整個 Project 維護成本。其實觀察幾年下來,本來寫 CodeIgniter 核心人物都漸漸不在了,像是 @Philsturgeon 自己創了 Fuel PHP Framework,現在似乎也沒在參與此 Project?CodeIgniter 最後都是由 @narfbg 來 maintain 以及開發新功能,世界各地的 Pull Request 也都是由他負責審核並且參與討論,但是一個人還是無法負擔這麼多事情阿,所以現在 CodeIgniter 3.0 還是生不出來。最後希望還是有人可以接手 CodeIgniter,很期待 3.0 出來的說,都已經做了一半以上了,不要放棄阿。

PHP 5.5.0 Release note: support Zend OPcache

php-logo

PHP 5.5.0 在上週 20 號正式 Release,也看到 PHP 官網終於改版了,新的版面看起來比較清爽,想嘗試新版面的朋友們,可以點選官網最上面鎖提示的 Bar,如果覺得新版面不是很好看,也可以切回去舊版。本篇來介紹 PHP 5.5.0 有哪些新 Feature。

新增 generators and coroutines 功能

Generators 提供了最簡單的寫法來實做 iterators,而不需要實做 Class 去實做 Iterator 介面,generators function 就跟一般的 PHP function 一樣,只是多了 yield 這 keyword,簡單舉個例子

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?php
function gen_one_to_three() {
    for ($i = 1; $i <= 3; $i++) {
        // Note that $i is preserved between yields.
        yield $i;
    }
}

$generator = gen_one_to_three();
foreach ($generator as $value) {
    echo "$value\n";
}
?>
[Read More]

在 git Commit 之前檢查 PHP 是否有錯誤

Git-Logo-2Color
在 commit code 之前,程式設計師必須確保程式碼的正確性,包含不要放入 debug message 到

git server,寫了一個簡單的 pre-commit 程式,來確保 PHP 是否有 Parse error,或者是在寫 CoffeeScript 及 JavaScript 時,常常會用到 console.* 來當作中斷點或者是顯示變數資料,這也是需要盡量避免 commit 到伺服器,你可不想要長官 review 的時候看到這麼多 debug 訊息吧。這時候就是需要 git-hookspre-commit 幫忙檢查這些 Syntax 語法,可以直接參考我的 git-hooks 專案。安裝方式很簡單:

$ git clone https://github.com/appleboy/git-hooks.git
$ chmod +x bin/hooks.sh pre-commit
$ ./bin/hooks.sh your_project_path
如果使用 git commit 之前,就會檢查 .js、.coffee、.php 等副檔名。

CodeIgniter Error Handler 處理

CodeIgniter

CodeIgniter 在處理 PHP Error handler 是直接呼叫內建的 Exceptions Class 顯示在瀏覽器上,如果有打開 log,系統另外會紀錄在 application/logs 目錄。這是 CodeIgniter 預設作法,但是我希望能把這些錯誤訊息都紀錄到 Database,相關 Notice, Error 訊息都一律寫到 DB 裡面,但是如果用 extend 系統內的 Exceptions 是完全做不到的,所以我寫了一個 Library 只要直接 include 系統就可以直接開始紀錄,因為在 PHP 你會遇到無數種 User experience,都會產生相關錯誤訊息,在產品上線都會將 display_errors 設定為 0,不要讓使用者看到任何錯誤訊息,但是我們還是需要全部的錯誤訊息阿,底下來看看如何安裝 Log Library。

建立 log table 可以直接參考

連結,或者是複製底下資料貼到 phpMyAdmin。

--
-- Table structure for table `logs`
--

DROP TABLE IF EXISTS `logs`;
CREATE TABLE IF NOT EXISTS `logs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `errno` int(2) NOT NULL,
  `errtype` varchar(32) CHARACTER SET utf8 NOT NULL,
  `errstr` text CHARACTER SET utf8 NOT NULL,
  `errfile` varchar(255) CHARACTER SET utf8 NOT NULL,
  `errline` int(4) NOT NULL,
  `time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
[Read More]

CodeIgniter 台灣官網原始碼釋出

CodeIgniter
2009 年開始接觸

CodeIgniter,拿到第1版原始碼來自 中國 CodeIgniter ,版本是很舊的 1.7.x 版本,目前官方已經是 2.1.3 版本,現在朝 3.0.x 版本邁進,這次有機會將整個原始碼改寫成 3.0.x develop 分支版本,也將整個官方 source code 分享出來,讓需要原始碼範例初學者可以參考,Source Code 已經放在 github 上面,由於是拿大陸那邊的原始碼,也許有些地方寫的不是很完整,歡迎大家 pull request。 台灣 CodeIgniter Source Code Github