zoukankan      html  css  js  c++  java
  • 又谈php+mysql并发数据出错问题

    最近,项目中的所有crond定时尽量取消,改成触发式。

    比如每日6点清理数据。

    原来的逻辑,写一个crond定时搞定

    现在改为触发式

    6点之后第一个玩家/用户  进入,才开始清理数据。

    出现了一个问题

    1 如何确保第一个玩家触发?

    update xxx set shijian = date('Y-m-d',time()-6*3600)   返回为0   则表示已有人触发过  返回1  表示第一个玩家 触发

    这又出现了一个问题:

    第一个人进入,触发清理数据。

    第二个人进入,进入正常数据操作,但是第一个人触发的清理数据操作也许并未完成。第二个玩家操作的数据可能被清理数据清理掉,如何防止??

    最后总结了一套比较可行的方案:

    $t = date(Y-m-d,time()-3600*6);
    if(  执行sql'update  xxx set sj_start = $t'返回的0|1 ) {
        更新操作
        sj_end=今天
    }
    
    if( sj_end = 今天 ){
        正常操作流程
    }else{
        echo '正在更新操作,请稍后';
    }
    



  • 相关阅读:
    贪心算法1000
    贪心算法1006
    1012
    贪心算法1016
    贪心算法1001
    贪心算法1004
    Java作业1
    指针数组与数组指针的区别
    Java 中对类进行排序的方法(转)
    java习题1
  • 原文地址:https://www.cnblogs.com/phper007/p/3512449.html
Copyright © 2011-2022 走看看