2008年5月31日 星期六

[Session]延長SESSION失效時間從24分鐘到4小時

延長SESSION失效時間從24分鐘到4小時



UTBlog寫文章,最後提交的關頭,有時候會出現“認證錯誤”資訊,提示再次登陸,再不可能“退回”到剛才編輯的頁面,結果是剛才的心血全部白費,痛哉!

究其原因,是因為php session有一個GC功能,就是Garbage Collector。這個GC啟動的時候,會清除那些已經“超時”的session。它的工作原理是這樣的(以utblog.com為例):



  1. 用戶訪問並登陸網站http://www.utblog.com,這時候後臺會調用session_start來嘗試生成一個會話(如果已經有會話,則相當於一次有效會話請求)

  2. 對於這樣的每一次有效會話請求(Request),apache的php模組會根據session相關的全域變數gc_probability/gc_divisor =>計算出啟動GC的概率,並由此概率來決定在這次請求中是否應該啟動GC。舉例來說,session.gc_probability的缺省值為1,session.gc_divisor的缺省值為100,則啟動“垃圾回收”器的概率是1%,這就意味著在每100次請求中,會有可能清理一次過期會話

  3. 如果GC啟動,則GC會掃描當前會話所在路徑(session.save_path)下的所有會話檔,並根據另外一個全域變數session.gc_maxlifetime的多少來判斷哪些session已經過期(“當前時間”與“會話檔的atime或者mtime”之間的差大於gc_maxlifetime:過期),並刪除這些過期的session

  4. 如果你在一個session啟動後,長時間沒有任何交交互操作(譬如,不停地碼字,沒有提交或者保存為草稿),那麼你的保存在後臺的會話檔將得不到機會被修改或者訪問,在gc_maxlifetime(缺省值1440秒=24分鐘)時間後,它有可能因失效而被清理,這以後你再提交,就會因為會話失效而報錯


由此可見,gc_maxlifetime設置為24分鐘,對於寫某些文章來說還不夠。這是一個原因,另外,session.save_path的缺省路徑在linux上是/tmp,很少有程式會修改這個設置。如果這台伺服器上有多個虛擬主機,那麼,/tmp目錄下會存放許多不同session_name的會話檔。糟糕的是,php的GC不區分會話歸屬,它會根據它取得的gc_maxlifetime來清理這個目錄下的所有過期session檔。

據以上分析,解決方案是:UTBLOG在.htaccess文件內添加了一條語句,將session.gc_maxlifetime的local value擴大為144004小時),同時在後臺將session.save_path設置為/tmp/utblog,這樣,utblog的會話檔就不受其他網站干擾了,而4小時的失效時間,我想,無論如何應該夠用了。

測試下來,一切如我所願。

另,如果直接改動/etc/php.ini當然也可以。如果沒有許可權改動php.ini,也沒有許可權改動apache的conf檔,.htaccess被禁止,那麼直接修改plog的sessionmanager.class.php文件,在session_start行前添加ini_alter("session.gc_maxlifetime", 14400)亦可。plog結構良好,只有這一處調用session_start,所以也只有這一處需要修改。我在本地做過測試,可以工作。

2008年5月30日 星期五

ADODB SET NAMES

$conn->Execute("SET NAMES 'big5'");
or
$conn->Execute("SET NAMES 'utf8'");

2008年5月19日 星期一

[Debug]Freebsd無法開機,出現fsck訊息

今天,
Server無法完成開機動作,
出現的錯誤訊息是
1.請你重新開機
2.到single mode模式(模式代號-4)
3.執行/sbin/fsck -y

即可

[新聞]2008/5/19 債信調升 魯拉:巴西是正經國家

對於西方國家來說,巴西所在的拉丁美洲,曾經是一個糾結在歷史與未來,左派與右派的國度,四位數的通貨膨脹,讓巴西經濟足足停滯23年,沒想到,在左派領袖魯拉上台後,巴西卻搭著原物料上漲的順風車,躍升為新興經濟強國。

 巴西總人口1.9億人,經濟仰賴農產品出口,長年無法擺脫經濟附庸的宿命,屈服於利益團體壓力,一味地追求社福,導致八○年代末出現四位數通膨,巴西尾大不掉的國營事業,仍吃掉巴西歲出36%的比重,國營企業的負擔是中國與印度的二倍。

 和俄國總理普丁的精明與冷酷相比,魯拉並不像是個扭轉國家經濟的領袖,工人出身的他,母親還是個文盲。

 但左派的背景,並沒有成為魯拉拓展國際盟友的障礙,他不僅參加布希的烤肉派對,也能與古巴領導人卡斯楚喝咖啡閒話家常,「巴西在國際社會,沒有任何敵人」巴西資本市場協會經濟學家赫達德(Claudio Haddad)形容,巴西是金磚四國當中,唯一沒有發展核武的強權。

 受惠於黃豆、鐵砂價格走高,魯拉社福支票慢慢獲得兌現,目前有一千一百戶家庭,每月獲得57美元補助。飛雅特汽車拉美區總裁貝里尼(Cledorvino Belini)說,巴西的社福政策,帶動由下而上的需求提升。

 巴西經濟的穩定也讓巴西央行能夠維持巴西里耳幣值的穩固,巴西里耳對美元創下九年新高,通膨獲得壓抑,巴西央行在2006年還能調降利息刺激經濟成長,巴西銀行授信餘額占國民生產毛額比重,從2002年的22%成長到目前的35%,當地車貸期限也延長到99個月,汽車銷售去年成長28%達到240萬台。

 英國衛報指出,巴西舉國上下沉浸在樂觀氣氛,認為巴西已從沉睡中甦醒,「消費者信心的恢復,是帶動需求成長的動力」福特汽車主管說,巴西百萬富豪人數,去年從十三萬增加到十九萬,是全球成長最快的國家之一。

 根據法國市調機構調查,自2005年以來,有超過二千萬名巴西人,月所得超越635美元,晉身中產階級之列,中產階級占人口比重,已從34%成長到46%,事實上,巴西個人電腦銷售量,全球僅次於美國、中國、日本。

 一位巴西餐廳老闆Alexandre Mendes,巴西人現在不必像過去「日子過一天算一天」,擔心下個月又有罷工。

 財富的增加,提升了巴西民族信心,巴西總統魯拉(Luiz Inacio Lula da Silva)最近將美國總統會談內容,跟友人轉述,他說,巴西最近好不容易從26年的經濟成長停滯甦醒過來,美國經濟卻在這個時候攪局,他跟布希說:「現在換我們叫美國人振作了。」

 四月底標準普爾將巴西國債信用評等,調升為投資等級(BBB-),此舉對巴西來說,極具象徵意義,巴西長年的積弱不振,讓法國已故總統戴高樂,直斥巴西是個不正經的國家(“Brazil is not a serious country”)。魯拉說,債信的調升證明,巴西是個政策嚴謹的正經國家。

2008年5月16日 星期五

[Debug]將input type=file的value清空

用以下的語法即可

<input type="file" onclick="this.outerHTML=this.outerHTML;">

2008年5月15日 星期四

[Debug]jQuery 和 Prototype 同時使用,發生衝突

第一種方法是直接使用 jQuery.noConflict():

jQuery.noConflict();
// 將Jquery的 $ 用 jQuery 代替
jQuery(document).ready(function(){
// jQuery code in here
});


第二種方法是賦值給一個簡短的名字:

var $j = jQuery.noConflict();
// 將Jquery的 $ 用 $j 代替
$j(document).ready(function(){
// jQuery code in here
});


第三種方法,通過傳遞$給ready函數參數作為參數,就可以在ready的參數funcion中使用$:

jQuery.noConflict();
jQuery(document).ready(function($){
// jQuery code in here
});


結論: 我比較喜歡用第二種方法,原因是簡單又明瞭 , $j 開頭的就是jquery , $ 開頭的就是 prototype,也不容易跟Prototype搞混

摘自:http://calos-tw.blogspot.com/2008/04/jquery-prototype.html

2008年5月14日 星期三

[Debug]CakePHP MODEL::save()有問題

$this->Member->save($this->data['Member']一直無法寫入到Database

找了好久
後來發現原來是某欄位資料前面多了一個空格@@"


foreach($cols as $key => $col_name){
$this->data['Member'][$col_name] = $data['MemberInvite'][$col_name];
}
改成
foreach($cols as $key => $col_name){
$this->data['Member'][$col_name] = trim($data['MemberInvite'][$col_name]);
}
即可
$this->Member->save($this->data['Member']寫入成功!

2008年5月4日 星期日

[Debug]iGoogle出現的錯誤訊息是Internet Explorer無法開啟網際網路網站

我在igoogle網頁制訂一些好用的工具,不過在選擇一個可隨上下午變化網頁背景變化的工具後,網頁出現故障,到現在都沒辦法登入igoogle網
頁,請問有人可以幫忙解答如何解決嗎?
出現的錯誤訊息是XInternet Explorer無法開啟網際網路網站http://www.google.com.te/ig?hl=zh-
TW&source=iglk 操作已中止


疑難排解: iGoogle 疑難排解基本內容


列印



如果您的 iGoogle 網頁發生問題,您可以嘗試以下這些步驟:


清除您瀏覽器的快取記錄及刪除 cookies



清除您的快取記錄及刪除 cookies 可以解決大部分的問題。如需相關說明,請造訪http://www.google.com/support/bin/answer.py?answer=497 。請注意, 清除您的 cookies 可能會解決您的問題,但同時也會清除您為先前造訪的網站所儲存的設定。



取消瀏覽器的套件



如果您使用任何瀏覽器的套件程式,試著暫時取消這些功能,以免其中某項功能與您的 iGoogle 網頁有所衝突。如需相關說明,我們建議您查閱該瀏覽器的幫助檔案。



重新安裝 Java



可能在您電腦上安裝的 Java 已經損毀了。要重新安裝 Java,請造訪http://www.java.com並按一下接近該頁上方的 [Free Java Download] 按鈕。



重新設定您的 iGoogle 網頁



重新設定您的 iGoogle 網頁會將其還原為預定的設置,同時會刪除所有您已添加的內容。如果您選擇的版本是台灣或香港版,重設也會恢復台灣或香港版 iGoogle 網頁預設的小工具 〈Google 新聞、熱門搜尋排行榜、Google 推薦‧‧‧等 〉。此外,如果您對移除某個小工具有困難,或是某個小工具在您打開 iGoogle 時造成您的瀏覽器自動關閉,您會發現重設您的網頁很有幫助。



要重設您的 iGoogle 網頁,請選擇您喜歡的版本:


如果您只要重設已登入狀態下的 iGoogle 網頁,請按一下 [重設已登入的偏好設定] 或 [Reset signed-in preferences] 按鈕。如果您要同時重設非登入及已登入狀態下的 iGoogle 網頁,請按一下 [重設所有偏好設定] 或 [Reset all preferences] 按鈕。 請注意,上述兩種重設功能只在您已登入的狀態下有效;如果您在重設前需要登入,請選擇台灣用戶登入香港用戶登入



如果您原本已經有 Google.com 的 iGoogle 設定,想手動加入台灣和香港版 iGoogle 的預設小工具,請造訪http://www.google.com/support/bin/answer.py?answer=71569



摘自:http://www.google.com.tw/support/bin/answer.py?answer=69569

wibiya widget