0

我的网络应用程序允许用户同时将一堆照片上传到服务器,然后将它们存储在数据库中。当第一张照片完成上传后,它应该根据今天的日期创建一个默认相册,并将其添加到其中。但是如果 photo1 完成,寻找相册,但找不到它,所以它决定创建它,但在它之前,photo2 完成并且也找不到它,所以他们都尝试创建同一个相册,导致失败?这可能非常不可能,但我认为可能会发生。还是大多数 Web 服务器一次只处理一个 PHP 脚本?

这会是一个有效且好的解决方案吗?:它不是首先检查相册是否存在,而是尝试创建它。如果它返回错误 1062(重复条目),那么它会选择它。然后,如果您考虑一下,哪个先完成并不重要……我只是不知道捕获错误是否会对性能产生重大影响。如果我要上传 200 张照片,那么其中 199 张将无法插入查询,然后尝试选择。如果另一种解决方案正常工作,则 199 将成功,一个将失败。

想法?

4

4 回答 4

1

我们有类似的东西,尽管与照片无关,但我们只是等待所有物品都发送完毕后再处理它们。这意味着首先将它们保留在暂存区,但可以解决另一个问题。

于 2009-06-10T16:52:41.820 回答
1

结合两者

检查它是否存在以及是否加入

如果不尝试创建一个

如果这不起作用重新开始整个事情

于 2009-06-10T16:54:03.270 回答
1

为什么不先创建相册,有内容才显示呢?

所以你的脚本逻辑看起来像:

create album<date>
while more images
    upload next image
    add to album<date>
voila

这样,如果他们制作了一张专辑但不使用它,它就永远不会显示。您可以使用维护脚本在一天或之后清理所有空专辑。

于 2009-09-27T07:34:47.063 回答
1

这就是事务处理和同步的全部内容。如果您的语言 (PHP) 不提供事务处理和同步,那么您可以使用数据库本身来为您处理这个问题。

我想你已经知道了 - 每个请求都应该检查以确保它尝试创建专辑成功。如果失败,它可以查看是否有其他进程/请求已经创建了它,然后使用它。

于 2009-09-27T07:44:52.153 回答