gpt4 book ai didi

php - 使用数据库与文件系统进行图像排序

转载 作者:行者123 更新时间:2023-11-30 13:27:38 24 4
gpt4 key购买 nike

我有多个图像存储在 URL 中,例如:/uploads/hash/IMAGE001.jpg。使用 jQuery UI 的 sortable(),我想异步排序和存储图像的顺序。

我想出了几种方法来做到这一点,我很好奇最好的方法是什么。

我可以为每个包含 3 列(ID、IMAGE_URL、IMAGE_INDEX)的 /hash/ 目录创建一个 SQL 表,并在每次排序时更新表的 _INDEX 值。然后,我可以通过使用 ORDER BY IMAGE_INDEX 查询数据库来获取 IMAGE_URL 的排序列表。

我的另一个想法是用前面的 0000 命名文件(例如/uploads/hash/0000IMAGE001.jpg)。如果我每次都重命名 PHP 中的文件,我可以在没有 SQL 开销的情况下使用 opendir() 在 PHP 中获取图像的 /hash/ 目录,然后按文件名排序在客户端或服务器端。

大量并发文件重命名(相对于并发 SQL 表更新)是否会遇到任何瓶颈问题?从 PHP 获取目录列表的性能与使用 ORDER BY 查询 SQL 有何不同?

最佳答案

在这种情况下,您应该使用数据库进行排序,

  1. 数据库会建立B-tree索引并保持排序以便快速检索和更新。
  2. 您可以对该文件进行范围查询。
  3. 您可以更改实际文件的存储而无需与查找相结合。
  4. 您可以在多台机器上使用 memcachd 和分片扩展到大量图像

文件系统并非设计用于排序和管理更改。

  1. 虽然文件数量少时速度很快,但排序的时间会越来越长。
  2. 图像本身与 id 密切相关,这限制了灵 active 。
  3. 将您限制在一台机器、一个目录和操作系统的限制下,您将不得不通过越来越多地构建它来扩展,最终构建您自己的伪数据库。
  4. 在服务器上这将是 hell 般的,操作系统锁和并发管理不像数据库那么复杂。

对于任何“真正的”应用程序,使用数据库都是这样做的方式,使用文件系统是一种快速破解。

关于php - 使用数据库与文件系统进行图像排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7936162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com