我是靠谱客的博主 眼睛大夏天,最近开发中收集的这篇文章主要介绍php判断文件是否被锁,PHP文件锁定读写的一点注意,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

PHP文件锁定读写的一点注意

时间: 2009-06-24  分类: php+Mysql  收藏

都说文本方式容易出现文件锁定失效等乱七八糟的问题.

其实并不是失效, 而是写法有些不对, 尤其是在 win32之类的平台下运行时更要注意.

被 lock_ex 后的文件 再以read模式 fopen 的话将读到空内容!!!

如果没有判断就把它当作空做操作后再写入就出错啦....

很多问题出在这里.

再来补充一下

如果一个文件被以write的模式fopen后并 flock(..LOCK_EX)的话

有另一个程序这时去 fopen 它,并且也要 flock(LOCK_EX) 的话,   这肯定出错.

因为第二个fopen时文件的size可能已经被 truncate 成 0 了..

------------- 下面做一个测试 ---------------

测试程序1.   :::: 1.php

$fd = fopen("./test.txt", "w");

flock($fd, LOCK_EX);

sleep(10);

fwrite($fd, "hightman");

flock($fd, LOCK_UN);

fclose($fd);

?>;

测试程序2.   ::::: 2.php

$fd = fopen("./test.txt", "r");

echo fread($fd, 512);

fclose($fd);

?>;

测试程序3   :::::: 3.php

if ($fd = @fopen("./test.txt", "r+")) {

flock($fd, LOCK_EX);

fseek($fd, 0, SEEK_END);

fwrite($fd, "shit");

flock($fd, LOCK_UN);

fclose($fd);

}

?>;

程序测试方法 1: 运行 1.php 然后马上去运行 2.php   ,   2.php 的输出结果是空.

2: 运行 1.php 然后马上去运行 3.php,   3.php 将在 1.php 运行结束后才能结束

不过结果文件内容是: "shit" 而不是 "hightmanshit"

所以特别要注意write时的情况

"w", "r+", "a", "a+" 都要注意文件长度为0的情况!可能文件是空,也可能是被flock

分享到:

评论

昵 称:

发表评论

最后

以上就是眼睛大夏天为你收集整理的php判断文件是否被锁,PHP文件锁定读写的一点注意的全部内容,希望文章能够帮你解决php判断文件是否被锁,PHP文件锁定读写的一点注意所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部