flock模拟flock实现文件锁定
内容导读
收集整理的这篇技术教程文章主要介绍了flock模拟flock实现文件锁定,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1641字,纯文字阅读大概需要3分钟。
内容图文
主要提供了一种思路。$lock0和$lock1就是文件锁定的标识符,当文件被某一用户打开的时候,$lock0和$lock1就会产生,当该文件没打开则不存在。
其实最关键就是有个标识符来表示当前这个文件的状态, $lock0和$lock1就是起这样的作用。
代码如下:
// Lock a file, timing out if it takes too long.
function lock ($lock, $tries) {
$lock0 = ".{$lock}0";
$lock1 = ".{$lock}1";
for ($i=0; $i<$tries; $i++) {
if (!is_file($lock0)) {
touch($lock0);
if (!is_file($lock1)) {
touch($lock1);
return 1;
}
}
usleep(100);
}
return 0;
}
// Unlock a file.
function unlock ($lock) {
unlink(".{$lock}1");
unlink(".{$lock}0");
}
// Usage example.
$filename = "somefile";
$data = "stuff and thingsn";
$tries = 10;
if (lock($filename, $tries)) {
$h = fopen($filename, "a") or die();
fwrite($h, $data);
fclose($h);
/**
* 另外一个进程写文件,检查是否锁定
*/
if (lock($filename, $tries)) {
$h2 = fopen($filename, "a") or die();
fwrite($h2,'check lock');
fclose($h2);
}else{
//die("Failed to lock $filename after ".($tries*100)." milliseconds!";
}
unlock($filename);
} else {
//die("Failed to lock $filename after ".($tries*100)." milliseconds!";
}
?>
以上就介绍了flock 模拟flock实现文件锁定,包括了flock方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
内容总结
以上是为您收集整理的flock模拟flock实现文件锁定全部内容,希望文章能够帮你解决flock模拟flock实现文件锁定所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。