亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP session文件獨占鎖引起阻塞問題解決方法

 更新時間:2015年05月12日 10:47:30   投稿:junjie  
這篇文章主要介紹了PHP session文件獨占鎖引起阻塞,本文講解PHP使用默認文件會話處理器時容易導致的阻塞問題解決方法,需要的朋友可以參考下

PHP默認的會話處理器是session.save_handler = files(即文件)。如果同一個客戶端同時并發(fā)發(fā)送多個請求(如ajax在頁面同時發(fā)送多個請求),且腳本執(zhí)行時間較長,就會導致session文件阻塞,影響性能。因為對于每個請求,PHP執(zhí)行session_start(),就會取得文件獨占鎖,只有在該請求處理結(jié)束后,才會釋放獨占鎖。這樣,同時多個請求就會引起阻塞。解決方案如下:

(1)修改會話變量后,立即使用session_write_close()來保存會話數(shù)據(jù)并釋放文件鎖。

session_start();
 
$_SESSION['test'] = 'test';
session_write_close();
 
//do something

(2)利用session_set_save_handler()函數(shù)是實現(xiàn)自定義會話處理。

function open($savePath, $sessionName)
{
  echo 'open is called';
  return true;
}
 
function close()
{
  echo 'close is called';
  return true;
}
 
function read($sessionId)
{
  echo 'read is called';
  return '';
}
 
function write($sessionId, $data)
{
  echo 'write is called';
  return true;
}
 
function destroy($sessionId)
{
  echo 'destroy is called';
  return true;
}
 
function gc($lifetime)
{
  echo 'gc is called';
  return true;
}
 
session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
register_shutdown_function ( 'session_write_close' );
 
session_start();
 
$_SESSION['foo'] = "bar";

當然,在 php 5.4.0之后,你可以通過實現(xiàn) SessionHandlerInterface 接口或繼承 SessionHandler 類來使用。

class MySessionHandler extends SessionHandler {
 
  public function __construct()
  {
  }
 
  public function open($save_path, $session_id)
  {
  }
 
  public function close()
  {
 
  }
 
  public function create_sid()
  {
  }
 
  public function read($id)
  {
  }
 
  public function write($id, $data)
  {
  }
 
  public function destroy($id)
  {
  }
}
 
$handler = new MySessionHandler();
 
//第2個參數(shù)將函數(shù) session_write_close() 注冊為 register_shutdown_function() 函數(shù)。
session_set_save_handler($handler, true);

你可以對上面的代碼進行具體實現(xiàn)和封裝,利用mysql或其它內(nèi)存數(shù)據(jù)庫來管理會話數(shù)據(jù)。還能解決使用集群
時,session數(shù)據(jù)共享問題。

相關(guān)文章

  • php 讀取文件夾下所有圖片、文件的實例

    php 讀取文件夾下所有圖片、文件的實例

    今天小編就為大家分享一篇php 讀取文件夾下所有圖片、文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • phpStudy 2016 使用教程詳解(支持PHP7)

    phpStudy 2016 使用教程詳解(支持PHP7)

    對于php新老手來說,WINDOWS下PHP環(huán)境配置是一件很困難的事。phpStudy 2016都是個理想選擇,下面小編給大家分享phpStudy 2016 使用教程詳解(支持PHP7),感興趣的朋友一起看看吧
    2017-10-10
  • PHP對接微信公眾平臺消息接口開發(fā)流程教程

    PHP對接微信公眾平臺消息接口開發(fā)流程教程

    這篇文章主要介紹了PHP對接微信公眾平臺消息接口開發(fā)流程,如何使用PHP版接口操作公眾平臺消息,需要的朋友可以參考下
    2014-03-03
  • PHP下的Oracle客戶端擴展(OCI8)安裝教程

    PHP下的Oracle客戶端擴展(OCI8)安裝教程

    這篇文章主要介紹了PHP下的Oracle客戶端擴展(OCI8)安裝教程,本文在Linux系統(tǒng)中實現(xiàn),OCI8是用來連接Oracle數(shù)據(jù)庫的PHP擴展模塊,需要的朋友可以參考下
    2014-09-09
  • Smarty模板常見的簡單應用分析

    Smarty模板常見的簡單應用分析

    這篇文章主要介紹了Smarty模板常見的簡單應用,結(jié)合實例形式分析了Smarty模板的引入、創(chuàng)建、設置及相關(guān)的常見使用技巧,需要的朋友可以參考下
    2016-11-11
  • 多個Laravel項目如何共用migrations詳解

    多個Laravel項目如何共用migrations詳解

    這篇文章主要給大家介紹了關(guān)于多個Laravel項目如何共用migrations的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    2018-09-09
  • PHP如何將log信息寫入服務器中的log文件

    PHP如何將log信息寫入服務器中的log文件

    這篇文章主要介紹了PHP如何將log信息寫入服務器中的log文件,需要的朋友可以參考下
    2015-07-07
  • php實例分享之通過遞歸實現(xiàn)刪除目錄下的所有文件詳解

    php實例分享之通過遞歸實現(xiàn)刪除目錄下的所有文件詳解

    最近遇到一個實際問題,需要清空制定目錄下的所有文件及清空數(shù)據(jù)庫。清空數(shù)據(jù)庫不難,但要如何遞歸刪除一個目錄下的所有文件呢。 于是去網(wǎng)上研究了下資料再加上自己琢磨解決了這一問題。
    2014-05-05
  • php layui實現(xiàn)前端多圖上傳實例

    php layui實現(xiàn)前端多圖上傳實例

    在本篇文章里小編給大家整理的是關(guān)于php結(jié)合layui前端實現(xiàn)多圖上傳的實例內(nèi)容,有需要的朋友們可以參考下。
    2019-07-07
  • ThinkPHP表單數(shù)據(jù)智能寫入create方法實例分析

    ThinkPHP表單數(shù)據(jù)智能寫入create方法實例分析

    這篇文章主要介紹了ThinkPHP表單數(shù)據(jù)智能寫入create方法,以實例形式較為詳細的分析了ThinkPHP中create只能寫入的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09

最新評論