Php I';当我尝试有条件地插入或更新时,我在我的Laravel应用程序中遇到了竞争条件,有什么建议吗。。。?
我的用户需要能够将文件上传到我的站点,因此我在前端实现了一个文件上传器小部件。它允许一次进行多个上载,每次上载都会触发一个文件的编码,以将文件保存到数据库中 问题是文件需要作为数组存储在数据库中的一行中(我知道,我知道…遗留原因) 在英文伪代码中,发生了以下情况:Php I';当我尝试有条件地插入或更新时,我在我的Laravel应用程序中遇到了竞争条件,有什么建议吗。。。?,php,mysql,laravel,innodb,race-condition,Php,Mysql,Laravel,Innodb,Race Condition,我的用户需要能够将文件上传到我的站点,因此我在前端实现了一个文件上传器小部件。它允许一次进行多个上载,每次上载都会触发一个文件的编码,以将文件保存到数据库中 问题是文件需要作为数组存储在数据库中的一行中(我知道,我知道…遗留原因) 在英文伪代码中,发生了以下情况: Laravel看到一个新文件已上载 Laravel检查是否有任何文件(根本)已上载到此实体 还没有上传任何文件吗?创建新记录以存储该文件 是否已存在此实体的文件?更新现有记录以将此文件添加到阵列 问题是,当第一次快速连续上传多个文件时
这是使用MySQL InnoDB数据库的Laravel 5.2。计划a:当您看到一个新文件时,请稍等片刻。然后查找“所有”文件并处理它们 计划B:将时间戳与记录一起存储。当注意到另一个文件时,查看是否存在具有“最近”时间戳的现有记录。如果是,假设它是同一“组”的一部分 这两个计划都会偶尔打嗝——主要是因为“立刻”的定义含糊不清 也许你现在还有另一个问题:当你抓取一个文件时,它被上传了一半,而你得到的是一个不完整的文件
“真正”的答案是在完成后上传一些“消息”。然后,在看到之前不要开始处理。(我意识到这可能不实用。)计划A:当你看到一个新文件时,请稍等片刻。然后查找“所有”文件并处理它们 计划B:将时间戳与记录一起存储。当注意到另一个文件时,查看是否存在具有“最近”时间戳的现有记录。如果是,假设它是同一“组”的一部分 这两个计划都会偶尔打嗝——主要是因为“立刻”的定义含糊不清 也许你现在还有另一个问题:当你抓取一个文件时,它被上传了一半,而你得到的是一个不完整的文件 “真正”的答案是在完成后上传一些“消息”。然后,在看到之前不要开始处理。(我意识到这可能不现实。)