最终使用相同ID的用户....可能的竞争条件?

时间:2015-08-18 12:29:03

标签: 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);
        }

1 个答案:

答案 0 :(得分:0)

感谢大家的帮助,但答案是用户设法通过软件找到了一条从未打算过或不可能的软件。

人们在代码上线时发现的东西真是太神奇了