做PHP有段时间了,这个问题困扰了我很久,大家帮帮忙.一个很小的应用,比如说:在上传图片时,给图片重命名,我的做法是用时间+随机数字,可是当多个用户同时上传的时候,就会出现不管随机几位数字,结果是一样的,一直找不到办法解决.
各位大虾们,该如何避免?另外,在很多需要写入数据库的时候,例如注册,同时有多个用户一起提交的话,很可能出现某一个用户的信息没有被收录...能够搞一个类似缓冲区这样的东西吗?把所有提交的信息都放到缓冲区里,然后逐一写入数据库..晕呵,我很菜的,不知道该怎么下手了都!!!

解决方案 »

  1.   


    <?php
    // 举例:
    $username = $_POST['username'];
    $password = $_POST['password'];
    //...
    //一些筛选步骤
    //...
    $DB->query("insert into user(username,password) values('$username', '$password')");
    //就是上面这句代码,如果在某一个时刻,被同时执行的话,就出现 问题!
    //详细的我也不知道该怎么描述,就是想做一个类似缓冲区的东西...
    //这样的问题我遇见好多次了,都快疯了哦...
    ?>
      

  2.   

    时间+随机数字会重复的,用md5(uniqid(rand(), true))
      

  3.   

    给图片重命名可以用time()来明名的,那样不会用相同的名字。
      

  4.   

    感谢楼上几位。insert delay into 正符合我的需求,我在网上查了半天,连 lock tables和rollback都找出来了。
    没想到还有这个mysql 命令。我的天,我实在太孤陋寡闻了!md5(uniqid(rand(), true))这样写的话,图片名有点长啊!time()也不太可靠,同一秒钟有几个请求的话那么就会出现相同的问提。我要来测试 INSERT DELAYED INTO 了。总之非常感谢。!