国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP對文件進行加鎖、解鎖實例

2024-05-04 23:30:29
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP對文件進行加鎖、解鎖實例,本文直接給出實現代碼和代碼的使用方法,需要的朋友可以參考下
 

有時候你的php腳本或許需要線程安全的保證,比如進行文件寫操作的時候。本文提供了文件加鎖函數以及使用示例。文件加鎖功能也可以用來獲得獨享的處理空間,防止腳本執行發生同步錯誤。

 

復制代碼代碼如下:

<?php
/*************************************************************************
*file lock
*@author Zeal Li
*http://www.zeali.net/
*
*************************************************************************/
/*
*lock_thisfile:獲得獨享鎖
*@param $tmpFileStr 用來作為共享鎖文件的文件名(可以隨便起一個名字)
*@param $locktype 鎖類型,缺省為false(非阻塞型,也就是一旦加鎖失敗則直接返回false),設置為true則會一直等待加鎖成功才返回
*@return 如果加鎖成功,則返回鎖實例(當使用unlock_thisfile方法的時候需要這個參數),加鎖失敗則返回false.
*/

 

function lock_thisfile($tmpFileStr,$locktype=false){

    if($locktype == false)

        $locktype = LOCK_EX|LOCK_NB;

    $can_write = 0;

    $lockfp = @fopen($tmpFileStr.".lock","w");

    if($lockfp){

        $can_write = @flock($lockfp,$locktype);

    }

    if($can_write){

        return $lockfp;

    }

    else{

        if($lockfp){

            @fclose($lockfp);

            @unlink($tmpFileStr.".lock");

        }

        return false;

    }

}

/** 
*unlock_thisfile:對先前取得的鎖實例進行解鎖
*@param $fp lock_thisfile方法的返回值
*@param $tmpFileStr 用來作為共享鎖文件的文件名(可以隨便起一個名字)
*/
function unlock_thisfile($fp,$tmpFileStr){

    @flock($fp,LOCK_UN);

    @fclose($fp);

    @fclose($fp);

    @unlink($tmpFileStr.".lock");

}
?>

 

 

 

復制代碼代碼如下:

<?php

 

// 使用舉例
$tmpFileStr = "/tmp/mylock.loc";
// 等待取得操作權限,如果要立即返回則把第二個參數設為false.
$lockhandle = lock_thisfile($tmpFileStr,true);
if($lockhandle){
    // 在這里進行所有需要獨占的事務處理。
    // ... ...
    // 事務處理完畢。
    unlock_thisfile($lockhandle,$tmpFileStr);
}
?>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 民丰县| 嘉鱼县| 安福县| 西昌市| 运城市| 乌鲁木齐市| 玉树县| 慈利县| 惠安县| 化德县| 噶尔县| 土默特右旗| 綦江县| 油尖旺区| 临沭县| 金堂县| 留坝县| 治县。| 鹤壁市| 阳朔县| 获嘉县| 新闻| 荥经县| 盐亭县| 璧山县| 峨边| 东莞市| 高雄市| 潞城市| 肥西县| 平江县| 娱乐| 石林| 赫章县| 崇州市| 江阴市| 望谟县| 南木林县| 河东区| 神池县| 永康市|