使用session_set_save_handler函數重載SESSION存儲方式之MYSQL

<?

$DB_SERVER = "server"; /* database server hostname */

$DB_NAME = "dbname"; /* database name */

$DB_USER = "root"; /* database user */

$DB_PASS = "*************"; /* database password */

$DB_SELECT_DB = "";

$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");

function sess_open($save_path, $session_name) {

global $DB_SERVER, $DB_NAME, $DB_USER, $DB_PASS, $DB_SELECT_DB;

if (! $DB_SELECT_DB = mysql_pconnect($DB_SERVER, $DB_USER, $DB_PASS)) {

echo "SORRY! MYSQL ERROR : Can't connect to $DB_SERVER as $DB_USER";

echo "MySQL Error: ", mysql_error();

die;

}

if (! mysql_select_db($DB_NAME, $DB_SELECT_DB)) {

echo "SORRY! MYSQL ERROR : Unable to select database $DB_NAME";

die;

}

return true;

}

function sess_close() {

return true;

}

function sess_read($SessionKey){

global $DB_SELECT_DB, $SESS_LIFE;

$Query = "SELECT SessionArray FROM cdb_global_sessions WHERE SessionKey = '".$SessionKey."' AND SessionExpTime > " . time();

$Result = mysql_query($Query, $DB_SELECT_DB);

if (list($SessionArray) = mysql_fetch_row($Result)) {

return $SessionArray;

}

return false;

}

function sess_write($SessionKey, $VArray) {

global $DB_SELECT_DB, $SESS_LIFE;

$SessionExpTime = time() + $SESS_LIFE;

$SessionArray = addslashes($VArray);

$Query = "INSERT INTO cdb_global_sessions (SessionKey,SessionExpTime,SessionArray) VALUES ('".$SessionKey."','".$SessionExpTime."','".$SessionArray."')";

$Result = mysql_query($Query, $DB_SELECT_DB);

if (!$Result){

$Query = "UPDATE cdb_global_sessions SET SessionExpTime = '".$SessionExpTime."', SessionArray = '".$SessionArray."' WHERE SessionKey = '".$SessionKey."' AND SessionExpTime > " . time();

$Result = mysql_query($Query, $DB_SELECT_DB);

}

return $Result;

}

function sess_destroy($SessionKey) {

global $DB_SELECT_DB;

$Query = "DELETE FROM cdb_global_sessions WHERE SessionKey = '".$SessionKey."'";

$Result = mysql_query($Query, $DB_SELECT_DB);

return $Result;

}

function sess_gc($maxlifetime) {

global $DB_SELECT_DB;

$Query = "DELETE FROM cdb_global_sessions WHERE SessionExpTime < " . time();

$Result = mysql_query($Query, $DB_SELECT_DB);

return mysql_affected_rows($DB_SELECT_DB);

}

session_set_save_handler(

"sess_open",

"sess_close",

"sess_read",

"sess_write",

"sess_destroy",

"sess_gc");

session_start();

?>

· 把年齡相仿的獅虎熊放一起,誰更厲害?結果出人意料

很多人都想知道獅子、老虎和熊打起來誰最厲害,于是便有好事之人把這三種動物關在一起...

· 湖北宜昌三峽壩區水面驚現神秘動物

近日,湖北宜昌,一段視頻在當地熱傳:有網友在三峽壩區拍到神秘動物,體型碩大數米長...

· 什麽是語段?語段的類型以及和句群、段落的區別與聯系是什麽?

句群是最高級的語言單位。 段落(自然段)是章法單位...

 
在編寫存儲過程時使用 Set NoCount On
使用 SET NOCOUNT ON默認情況下,存儲過程將返回過程中每個語句影響的行數。如果不需要在應用程序中使用該信息(大多數應用程序並不需要),請在存儲過程中使用 SET NOCOUNT ON 語句以終止該行爲。根據存儲過程中包含...查看完整版>>在編寫存儲過程時使用 Set NoCount On
 
使用另類方式調用函數
大家可以自己編譯運行一下下面的代碼,看看爲什麽是這樣哦:)#include <windows.h>#include <stdio.h>void __stdcall Test1(){ printf("Test1\n");} void __stdcall Test2(){ printf("Test2\n");} v...查看完整版>>使用另類方式調用函數
 
優化使用mysql存儲session
之前寫過兩篇文章《自定義SESSION(二)——數據庫保存》和《我爲什麽不使用session》 但後來發現都有問題。前者處理在實際中幾乎沒什麽用處,而且session回收還得自己另外處理。後者頻繁的操作數據庫,打來了很大的...查看完整版>>優化使用mysql存儲session
 
MDaemon以MySQL爲存儲方式的配置過程
MDaemon以MySQL爲存儲方式的配置過程
以下將是我詳細配置的過程加圖片演示:1、先到http://dev.MySQL.com/downloads/下載MyODBC的最新版本,並安裝它。安裝過程非常的簡單,我就不再貼圖演示。2、進入MySQL,新建一個用來存儲你MDaemon數據的數據庫,我這...查看完整版>>MDaemon以MySQL爲存儲方式的配置過程
 
使用函數遞歸實現基于php和MySQL的動態樹型菜單
樹型菜單在很多桌面應用系統中都有非常廣泛的應用,其主要優點是結構清晰,利于使用者非常清楚的知道目前自己所在的位置。但在web上樹型菜單的應用因 爲沒有理想的現成組件可以拿過來直接使用,所以一般的情況下,程...查看完整版>>使用函數遞歸實現基于php和MySQL的動態樹型菜單