本文實例講述了PHP實現負載均衡下的session共用功能。分享給大家供大家參考,具體如下:
最近忙于開發臺灣運動彩券第四版的程序,所以已經很久沒有上來寫東西了,今天隨便寫點東西和大家分享.
首先說一下負載均衡,相信大家都知道負載均衡可以很好地解決網站大流量的問題,負載均衡就是把用戶的請求分發到多態pc上進行處理,既然分發了請求那么session就要考慮好處理方法.傳統情況下php會把session存入本機的暫存檔內,可是這種情況下分發了之后session就丟失了,其實最簡單的解決方法就是用memcache來托管,單獨架設一臺服務器用來作為memcache服務器(內存最好是大一點),接下來的工作就交給PHP代碼來做就好了,這裡我不想修改php.ini,因為每臺都改的話太累,而且我又比較懶
或許您會告訴我說直接修改一下php.ini的session存儲位置就能寫入memcache了,是,沒錯,但是這種方式卻不能調用gc釋放掉過期的會話,而今天我們要說的就是不但要讓他托管,還得讓他自動釋放會話.
既然要做,那就要做到完美才行,下邊是我的代碼,不懂得自己看注釋:
$_ENV=array( SYS = array( Memip = 127.0.0.1 , //MEMCACHE的ip Mempt = 11211, //MEMCACHE的port Memtim = 10, //MEMCACHE的超時時間//托管SESSION到MEMCACHE,如果開啟失敗,則說明MEMCACHE沒有配置正確final html' target='_blank'>class S{ public static function open(){ //禁止session自動開啟 session_write_close(); ini_set( session.auto_start ,0); //使用五十分之一的概率啟動gc清理會話 ini_set( session.gc_probability ,1); ini_set( session.gc_pisor ,50); ini_set( session.use_cookies ,1); //session的壽命 //ini_set( session.gc_maxlifetime ,$_ENV[ SYS ][ Memtim //ini_set( session.cookie_lifetime ,$_ENV[ SYS ][ Memtim //ini_set( session.save_handler , files //ini_set( session.save_path ,Run. _tmp //ini_set( session.save_handler , memcache //ini_set( session.save_path , tcp://127.0.0.1:11211 //$_ENV[ S_tim ] = ini_get( session.gc_maxlifetime //建立memcache對象 $_ENV[ S_mem ]=new Memcache; $_ENV[ S_mem ]- connect($_ENV[ SYS ][ Memip ],$_ENV[ SYS ][ Mempt ]) or die( Memcache連接失敗! return TRUE; 返回:讀到的內容 /**/ public static function read($id){ return $_ENV[ S_mem ]- get( s_ .$id); 返回:bool /**/ public static function write($id,$data){ return $_ENV[ S_mem ]- set( s_ .$id,$data,MEMCACHE_COMPRESSED,$_ENV[ SYS ][ Memtim 返回:bool /**/ public static function close(){ $_ENV[ S_mem ]- close(); unset($_ENV[ S_mem ],$_ENV[ SYS ][ Memtim return TRUE; 返回:bool /**/ public static function destroy($id){ return $_ENV[ S_mem ]- delete( s_ .$id); 返回:bool /**/ public static function gc(){ return TRUE;session_set_save_handler( S::open , S::close , S::read , S::write , S::destroy , S::gc $_ENV[ sessionid ]=(isset($_REQUEST[ sessionid ])) ? trim($_REQUEST[ sessionid ]) : session_id();if($_ENV[ sessionid ]!= ){session_id($_ENV[ sessionid }session_start();您可能感興趣的文章:
php無限級評論嵌套實現代碼php技巧
PHP實現數據庫的增刪查改功能及完整代碼php實例
PHPMAILER實現PHP發郵件功能php實例
以上就是PHP實現負載均衡下的session共用功能php技巧的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答