好的,我正在开发各种共享系统/服务。人们可以在那里将自己的媒体上传到服务器。我在大部分构建中使用 PHP 和 mySQL,目前使用的是单一服务器环境。但是我需要它是可扩展的,因为我打算在接下来的 6 个月内将媒体移动到服务器集群,将站点/服务留在自己的服务器上。无论如何,这是一个静音点。
我的目标或希望是提出一个风险极低的命名约定,在上传时重命名文件时几乎不可能与另一个文件发生冲突。迄今为止,我已经阅读了许多概念,发现 UUID (GUID) 是满足我所有需求的最佳选择,因为它有很多可能性,我认为我永远无法达到这么多共享图像。
我的问题是提出了一个生成 UUID 更可取的 v3 或 v5 的函数(我知道它们是相同的,但 v5 目前并未 100% 符合 UUID 的标准)。对 UUID 及其约束知之甚少,这使得它们在以后尝试对它们进行正则表达式时或如果需要时是独一无二的和/或有效的,我似乎无法提出可行的解决方案。我也不知道我应该真正使用 v3 还是 v5。或v4。因此,我正在寻找有关将返回所需版本 UUID 类型的函数的建议和帮助。
省着气我还没有尝试过任何事情,因为我现在不知道从哪里开始。有了这个,我打算将这些文件保存在许多文件夹中,以抵消由大型目录列表引起的负载。所以我也在降低我在那里发生碰撞的风险。我还将这些名称存储在数据库中,其中关联的文件夹和其他信息与每个图像相关联,所以我看到的另一个问题是,当我为要重命名的文件随机生成 UUID 时,我不想查询多个数据库在发生冲突的情况下,我实际上可能希望每个函数调用返回 5 个 UUID,并查看我的查询中是否有匹配项,而我的查询中将使用第一个没有匹配项的匹配项。
无论如何,我知道这是很多阅读,我知道它没有代码,希望你们中的很多人最终不会因为阅读太多而投反对票,并假设这是一个糟糕的问题/讨论。因为我很想知道如何从一开始就解决这个问题,这样我就可以尽可能少地根据需要扩大规模。