php – 在保持锁定的同时读取和写入文件

我通过将当前计数存储在文件中来制作一个简单的页面加载计数器.这就是我想要这样做的方式:

>锁定文件(flock)
>读取当前计数(fread)
>增加它()
>写新计数(fwrite)
>解锁文件/关闭它(flock / fclose)

这可以在不失锁的情况下完成吗?

据我了解,在不丢失锁定的情况下无法写入文件.我想出解决这个问题的唯一方法是使用“r”模式编写一个字符,然后计算字符数.

如上所述,你可以使用FLock.一个简单的例子是:
//Open the File Stream
$handle = fopen("file.txt","r+");

//Lock File,error if unable to lock
if(flock($handle,LOCK_EX)) {
    $count = fread($handle,filesize("file.txt"));    //Get Current Hit Count
    $count = $count + 1;    //Increment Hit Count by 1
    ftruncate($handle,0);    //Truncate the file to 0
    rewind($handle);           //Set write pointer to beginning of file
    fwrite($handle,$count);    //Write the new Hit Count
    flock($handle,LOCK_UN);    //Unlock File
} else {
    echo "Could not Lock File!";
}

//Close Stream
fclose($handle);

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...