主にアイデアを提供します。
$lock0 と $lock1 はファイルのロック識別子です。ユーザーがファイルを開くと、$lock0 と $lock1 が生成されます。ファイルが開かれていない場合、それらは存在しません。
実際、最も重要なことは、ファイルの現在のステータスを表す識別子を持たせることです。$lock0 と $lock1 がそのような役割を果たします。
コードをコピー コードは次のとおりです:
//ファイルをロックします。時間がかかりすぎる場合はタイムアウトします。
function lock ($lock, $tries) {
$lock0 = ".{$lock}0"; lock}1 ";
for ($i=0; $i if (!is_file($lock0)) {
touch($lock0);
if (! is_file($lock1)) { >}
// ファイルのロックを解除します。
functionunlock($lock) {
unlink(".{$lock}1");
unlink(".{$lock} 0");
}
// 使用例。
$filename = "somefile";
$data = "stuff and thingsn" ;
$tries = 10;
if (lock($filename, $tries)) {
$h = fopen($filename, "a") または die(); h, $data);
fclose ($h);
/**
* 別のプロセスがファイルを書き込み、ロックされているかどうかを確認します
*/
if (lock($filename, $tries)) {
$h2 = fopen($)ファイル名, "a") または die() ;
fwrite($h2,'チェックロック');
}else{
//die("失敗しました".($tries* 100) の後の $ ファイル名をロックします!"; 」ミリ秒!";
}
?>