网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

php里面的文件锁

通过使用ab做并发执行的时候,发现库存减少不一致,为什么呢?

创新互联建站是一家集网站建设,石林企业网站建设,石林品牌网站建设,网站定制,石林网站建设报价,网络营销,网络优化,石林网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

答:主要是由于并发的时候,多个php程序去操作了同一个资源,这个时候造成资源的抢夺,数据不一致。为了解决这个问题,可以使用php里面的文件锁来实现。在多个php程序操作某一个资源的时候,需要先去获取这个锁资源,只有获取到锁的程序才有权限去操作资源。当操作完成后,释放锁资源,使得别的程序能再次去抢夺锁资源

    1.创建一把锁,一个文本文件,随意命名,lock.txt

    $key = fopen('lock.txt','r');

    do{

    $lockStatus = flock($key,LOCK_EX);//获得锁

    //为防止php占cpu不放

    usleep(50000);//0.05s

    }while(!$lockStatus);

    //抢到锁的程序可以操作资源

    if($lockStatus){

    //为防止高并发,所有程序写在这里即可

    //减一操作,多个程序去操作减一

    $sql   = "select * from kucun where goo_id =1";

    $res   = MySQL_query($sql);

    $data  = mysql_fetch_assoc($res);

    $data['kucun']--;

    $sql   = "update kucun set kucun = " . $data['kucun'] . "where good_id = 1";

    mysql_query($sql);

    echo "库存正在减少";

    flock($lockStatus,LOCK_UN);//释放锁

    }else{

    echo "系统繁忙!";

    }

    fclose($key);//关闭指向的文件

    


新闻名称:php里面的文件锁
浏览地址:http://bjjierui.cn/article/jdedcc.html

其他资讯