我从 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/