《PHP應(yīng)用:PHP對(duì)文件進(jìn)行加鎖、解鎖實(shí)例》要點(diǎn):
本文介紹了PHP應(yīng)用:PHP對(duì)文件進(jìn)行加鎖、解鎖實(shí)例,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
PHP編程有時(shí)候你的php腳本或許需要線程平安的保證,比如進(jìn)行文件寫操作的時(shí)候.本文提供了文件加鎖函數(shù)以及使用示例.文件加鎖功能也可以用來獲得獨(dú)享的處理空間,防止腳本執(zhí)行發(fā)生同步錯(cuò)誤.
PHP編程function lock_thisfile($tmpFileStr,$locktype=false){
PHP編程??? if($locktype == false)
PHP編程??????? $locktype = LOCK_EX|LOCK_NB;
PHP編程??? $can_write = 0;
PHP編程??? $lockfp = @fopen($tmpFileStr.".lock","w");
PHP編程??? if($lockfp){
PHP編程??????? $can_write = @flock($lockfp,$locktype);
PHP編程??? }
PHP編程??? if($can_write){
PHP編程??????? return $lockfp;
PHP編程??? }
PHP編程??? else{
PHP編程??????? if($lockfp){
PHP編程??????????? @fclose($lockfp);
PHP編程??????????? @unlink($tmpFileStr.".lock");
PHP編程??????? }
PHP編程??????? return false;
PHP編程??? }
PHP編程}
PHP編程/**
*unlock_thisfile:對(duì)先前取得的鎖實(shí)例進(jìn)行解鎖
*@param $fp lock_thisfile辦法的返回值
*@param $tmpFileStr 用來作為共享鎖文件的文件名(可以隨便起一個(gè)名字)
*/
function unlock_thisfile($fp,$tmpFileStr){
PHP編程??? @flock($fp,LOCK_UN);
PHP編程??? @fclose($fp);
PHP編程??? @fclose($fp);
PHP編程??? @unlink($tmpFileStr.".lock");
PHP編程}
?>
PHP編程// 使用舉例
$tmpFileStr = "/tmp/mylock.loc";
// 等待取得操作權(quán)限,如果要立即返回則把第二個(gè)參數(shù)設(shè)為false.
$lockhandle = lock_thisfile($tmpFileStr,true);
if($lockhandle){
??? // 在這里進(jìn)行所有必要獨(dú)占的事務(wù)處理.
??? // ... ...
??? // 事務(wù)處理完畢.
??? unlock_thisfile($lockhandle,$tmpFileStr);
}
?>
歡迎參與《PHP應(yīng)用:PHP對(duì)文件進(jìn)行加鎖、解鎖實(shí)例》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/12561.html