首页 > 其他 > 详细

做了个弱统计,写入到文件中,引起并发问题,加锁解决

时间:2015-03-31 19:33:32      阅读:199      评论:0      收藏:0      [点我收藏+]

开始是使用file_get_contents,和file_put_contents()读取和写入文件,结果当同一时间大量请求时,文件内容就会出现重置为空的现象,导致原始内容丢失

网上找了个解决办法,经修改如下:

function pageCount($fileName){
    if ($fp = fopen($fileName, r+)) {
        $startTime = microtime();
        do {
            $canWrite = flock($fp, LOCK_EX | LOCK_NB);
            if (!$canWrite) {
                usleep(round(rand(0, 100) * 1000));
            }
        } while ((!$canWrite) && ((microtime() - $startTime) < 1000));
        if ($canWrite) {
            $count = intval(fgets($fp));
            ++$count;
            ftruncate($fp,0); // 将文件截断到给定的长度 
            rewind($fp); // 倒回文件指针的位置 
            fwrite($fp, $count);
            flock($fp , LOCK_UN);
        }
        fclose($fp);
    }
}

 

做了个弱统计,写入到文件中,引起并发问题,加锁解决

原文:http://www.cnblogs.com/benlightning/p/4381519.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!