【问题标题】:Static Array vs Mysql + PHP vs XML file to update via ajax静态数组 vs Mysql + PHP vs XML 文件通过 ajax 更新
【发布时间】:2011-07-31 00:59:28
【问题描述】:

我有五个元素。每个元素有 5 种颜色,我必须检索适合这些颜色的图片。

例子:

Boot [Color1,Color2,Color3,Color5]
Shoes [Color1,Color2,Color3,Color5]

第一个元素有 28000 个可能性,其他元素少于 5000 个。通过 ajax 我将发送颜色并返回图片。

那么,存储将要增长的数据的最佳方式是: 静态数组。 一个带有 Mysql 数据库的 PHP。 或者一个静态 XML 文件(它可以重 1MB)。

谢谢

【问题讨论】:

  • 每分钟可以收到1000个req​​uets。

标签: php mysql xml ajax


【解决方案1】:

如果您将这些数据存储在静态 XML 文件中,则每次您想要获取一些信息时都必须对其进行解析——这会占用大量内存和 CPU 时间。

如果你使用一个太大的 PHP 数组,你会占用太多的内存——而且它可能对性能也没有那么好。

要存储数据并能够根据条件查询数据,使用 SQL 数据库(当然具有适当的结构和索引) 似乎是正确的想法。


在那之后,没有什么能阻止你放置一些缓存机制(通常使用 APC 或 memcached ——甚至是像 varnish 这样的反向代理),以避免使用相同的请求过于频繁地访问数据库.

【讨论】:

    【解决方案2】:

    这取决于您计划如何使用这些数据。如果您希望这些数据永久可用,我会说我们使用 php 和数据库的最佳方式。否则,如果它只是一次性使用,您可以将此数据存储在静态数组中。希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      最佳取决于平衡可维护性和性能以及您的技能在哪里最强。

      如果性能最重要,请将每种颜色编码为 RGB 值 #rrggbb,然后每次启动时按其 ID。

      然后用值命名每个图像,例如: 00FF00_42.jpg 用于样式#42 靴子的绿色靴子。

      如果您需要 ID #42 的绿色启动,您只需请求 images/00FF00_42.jpg 并完全绕过 PHP、数据库和任何其他类型的查找。

      这会提高性能,但要确保正确命名所有 28000 X 5000 图像需要一些基础架构工作。

      另一种选择,您可以为每种引导样式设置一个位掩码灰度图像,然后使用 http://php.net/gdhttp://php.net/imagemagik 像 Ted Turner 那样“着色”它。

      仍然没有数据库,您想“缓存”流行的图像。

      基本点是这样的: 没有真正需要“存储”颜色。它们最终会变成 RGB,你可以只使用十六进制颜色代码。 (除非这些是用于不是真正 RGB 颜色模型的印刷媒体......)

      所以你真的只需要一个清晰而简单的方法来组织你的 5000 只靴子,这真的很简单。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-29
        • 2012-05-09
        • 1970-01-01
        相关资源
        最近更新 更多