mysql - 用户最终具有相同的 id...可能的竞争条件?

标签 mysql laravel eloquent race-condition

我从 Laravel 5 代码库继承了一段代码,它本质上采用 svg 符号,允许您添加效果和文本,并将其保存为链接到用户帐户的 SVG。该系统可以正常工作,但每隔一段时间您就会看到 2 个客户最终会使用与其帐户链接的相同“newAvatar->id”。我一直在绞尽脑汁想为什么,但似乎无法弄清楚。

这是否是由某种竞争条件引起的?我是否需要在这段代码周围放置某种信号量或互斥锁?

        public function createAvatar()
        {
            $status = 400;
            $_data = array('error' => 'Unknown Error');

            if (Input::has('avatar_svg'))
            {
                    $svg = Input::get('avatar_svg');

                  $newAvatar = Avatar::create([
                      'svg_content' => $svg,
                  ]);

                  if ($newAvatar) {
                      $status = 200;
                      $_data = array('avatarID' => $newAvatar->id);
                  }
           }

      //data is sent back as JSON to be processed by AngularJS                   
            return Response::json([
                'data' => $_data,                               
            ], $status, array(), JSON_PRETTY_PRINT);
        }

最佳答案

感谢所有人的帮助,但答案是用户设法通过该软件找到了一条从未打算采取或不可能采取的路径。

当代码上线时,人们会发现令人惊奇的事情

关于mysql - 用户最终具有相同的 id...可能的竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32072466/

相关文章:

php - 在 OpenCart 中显示表中列的总和

laravel-5 - 如何使用 laravel eloquent 连接 3 个表

mysql - Eloquent:从 whereHas block 中选择字段失败

php - Laravel 5.2 验证错误未出现在 Blade 中

Laravel:对嵌套关系中的属性求和

java - 尝试连接mysql数据库

php - Order by 不与 group by 子句一起使用

PHP/MySQL 多列排序

javascript - 在 laravel 中通过 javascript 计算价格

php - 仅当有空位时才选择事件