PHP ファイルのロックとロック解除、
ファイル書き込み操作を実行する場合など、PHP スクリプトでスレッドの安全性の保証が必要になる場合があります。この記事では、ファイルロックの機能と使用例を紹介します。ファイルロック機能を使用して、スクリプト実行時の同期エラーを防ぐために排他的な処理領域を確保することもできます。
コードをコピーします コードは次のとおりです:
/*************************************************** *********************
*ファイルロック
*@著者ジール・リー
*http://www.zeali.net/
*
************************************************* ***********************/
/*
*lock_thisfile: 排他的ロックを取得します
*@param $tmpFileStr は共有ロックファイルとして使用されるファイル名です (任意の名前を付けることができます)
*@param $locktype ロック タイプ、デフォルトは false (非ブロッキング、つまり、ロックが失敗すると直接 false を返します)。true に設定すると、ロックが成功するまで待機してから戻ります
。
*@return ロックが成功した場合は、ロック インスタンスが返されます (unlock_thisfile メソッドを使用する場合、このパラメーターは必須です)。ロックが失敗した場合は、false が返されます。
*/
関数 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){
$lockfp を返す;
}
その他{
if($lockfp){
@fclose($lockfp);
@unlink($tmpFileStr.".lock");
}
false を返す;
}
}
/**
*unlock_thisfile: 以前に取得したロック インスタンスのロックを解除します
*@param $fp lock_thisfileメソッドの戻り値
*@param $tmpFileStr は共有ロックファイルとして使用されるファイル名です (任意の名前を付けることができます)
*/
関数unlock_thisfile($fp,$tmpFileStr){
@flock($fp,LOCK_UN);
@fclose($fp);
@fclose($fp);
@unlink($tmpFileStr.".lock");
}
?>
コードをコピーします コードは次のとおりです:
//使用例
$tmpFileStr = "/tmp/mylock.loc";
// 操作権限が取得されるのを待ちます。すぐに戻りたい場合は、第 2 パラメータを false に設定します。
$lockhandle = lock_thisfile($tmpFileStr,true);
if($ロックハンドル){
// 排他処理が必要なトランザクションはすべてここで実行されます。
// ... ...
// トランザクションが完了しました。
unlock_thisfile($lockhandle,$tmpFileStr);
}
?>
http://www.bkjia.com/PHPjc/946742.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/946742.html技術記事 PHP はファイルをロックおよびロック解除します。ファイル書き込み操作を実行する場合など、PHP スクリプトでスレッドの安全性の保証が必要になる場合があります。この記事では、ファイルロックの機能と使い方について説明します...