茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    PHP中使用Memache作為進(jìn)程鎖的操作類分享
    來(lái)源:易賢網(wǎng) 閱讀:1394 次 日期:2015-04-03 10:28:03
    溫馨提示:易賢網(wǎng)小編為您整理了“PHP中使用Memache作為進(jìn)程鎖的操作類分享”,方便廣大網(wǎng)友查閱!

    這篇文章主要介紹了PHP中使用Memache作為進(jìn)程鎖的操作類分享,本文直接給出類實(shí)現(xiàn)代碼以及應(yīng)用示例,需要的朋友可以參考下

    <?php

    // 使用Memache 作為進(jìn)程鎖

    class lock_processlock{

    // key 的前綴

    protected $sLockKeyPre;

    // 重試間隔

    protected $iLockRetryInterval;

    //重試次數(shù)

    protected $iLockRetryCount;

    //鎖的過(guò)期時(shí)間

    protected $iLockCacheTimeout;

    // 鎖過(guò)期后的回調(diào)函數(shù)

    protected $onLockTimeoutFunc;

    // memache 的實(shí)例

    protected $oMemcache;

    // 存儲(chǔ)memcache失敗后重試次數(shù)

    protected $iMemcacheRetryCount;

    public function __construct ($onLockTimeoutFunc=NULL) {

    $aLockConfig = get_config('', 'lock');

    $this->sLockKeyPre = self::LOCK_KEY_PRE;

    $this->iLockRetryInterval = self::LOCK_RETRY_INTERVAL;

    $this->iLockRetryCount =self::LOCK_RETRY_COUNT;

    $this->iLockCacheTimeout = self::LOCK_CACHE_TIMEOUT;

    $this->iMemcacheRetryCount = self::LOCK_CACHE_TIMEOUT;

    if(!$onLockTimeoutFunc){

    // 如果加鎖不成功則調(diào)用回調(diào)函數(shù),如果沒(méi)有回調(diào)函數(shù),使用本類中所帶的

    $onLockTimeoutFunc ='onLockTimeout' ;

    }

    $this->onLockTimeoutFunc = $onLockTimeoutFunc;

    }

    /**

    連接memcache 服務(wù)器

    */

    public function connect() {

    if (! isset ( $this->oMemcache )) {

    $this->oMemcache = new Memcache ();

    $this->oMemcache->connect ( '127.0.0.1', 11211 );

    }

    return $this->oMemcache;

    }

    /*

    向MeMcache中添加 key

    */

    public addMemcache($sKey, $sValue, $iTimeout){

    for($i= 0 ; $i<$this->iMemcacheRetryCount){

    $bRes = $this->oMemcache->add($sKey, $sValue, $iTimeout);

    if($bRes){

    return true ;

    }

    // 如果加鎖不成功,sleep 之后,從新加鎖

    usleep($this->iLockRetryInterval*1000);

    }

    return false ;

    }

    /*

    加鎖

    */

    public function lock($sLockID){

    $oMemcache = $this->connect();

    $sKey = $this->sLockKeyPre . $sLockID;

    // 加鎖如果不成功可以多試幾次

    for($i = 0 ; $i <$this->iLockRetryCount ; $i++){

    // 這里設(shè)置value 的值可以隨便設(shè)置

    if($this->addMemcache($sKey,'1',$this->iLockCacheTimeout)){

    return true ;

    }

    // 如果加鎖不成功,sleep 之后,從新加鎖

    usleep($this->iLockRetryInterval*1000);

    }

    // 若還不成功,則加鎖失敗,調(diào)用回調(diào)函數(shù),.也就是失敗后需要處理的操作

    if(is_callable($this->onLockTimeoutFunc)){

    // 調(diào)用函數(shù)

    call_user_func($this->onLockTimeoutFunc);

    }

    }

    /*

    解鎖操作

    */

    public function unlock($sLockID){

    $oMemcache = $this->connect();

    $sKey = $this->sLockKeyPre . $sLockID;

    // 刪除key

    return $this->oMemcache->delete($sKey);

    }

    /**

    如果加鎖不成功,則執(zhí)行如下操作

    */

    public function onLockTimeout(){

    echo ("加鎖超時(shí)");

    }

    }

    // 應(yīng)用實(shí)例

    $oLock = new lock_processlock();

    $lockResource = "test";

    // 加鎖

    $oLock->lock($lockResource);

    // 解鎖

    更多信息請(qǐng)查看IT技術(shù)專欄

    更多信息請(qǐng)查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:PHP中使用Memache作為進(jìn)程鎖的操作類分享
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)