《PHP應用:PHP對文件進行加鎖、解鎖實例》要點:
本文介紹了PHP應用:PHP對文件進行加鎖、解鎖實例,希望對您有用。如果有疑問,可以聯系我們。
PHP編程有時候你的php腳本或許需要線程平安的保證,比如進行文件寫操作的時候.本文提供了文件加鎖函數以及使用示例.文件加鎖功能也可以用來獲得獨享的處理空間,防止腳本執行發生同步錯誤.
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:對先前取得的鎖實例進行解鎖
*@param $fp lock_thisfile辦法的返回值
*@param $tmpFileStr 用來作為共享鎖文件的文件名(可以隨便起一個名字)
*/
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";
// 等待取得操作權限,如果要立即返回則把第二個參數設為false.
$lockhandle = lock_thisfile($tmpFileStr,true);
if($lockhandle){
??? // 在這里進行所有必要獨占的事務處理.
??? // ... ...
??? // 事務處理完畢.
??? unlock_thisfile($lockhandle,$tmpFileStr);
}
?>
歡迎參與《PHP應用:PHP對文件進行加鎖、解鎖實例》討論,分享您的想法,維易PHP學院為您提供專業教程。