码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-03-31 19:36:18      阅读:153      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!