【问题标题】:deal with big arrays in php [closed]处理php中的大数组[关闭]
【发布时间】:2010-11-25 11:55:17
【问题描述】:

在我正在开发的应用程序中,我需要从各种来源(mysql 数据库、facebook 以及未来的其他社交网络)获取信息。并将所有信息加入相同的结构中,

我现在正在做的是从我的数据库和 facebook 获取数据作为数组,然后使用 array_merge 加入两个数组,然后迭代该数组并创建一个自定义数组,该数组格式化为我想要的字段。

结构本身正在工作,但我担心随着越来越多的帖子进入我的应用程序以及相关的 Facebook 页面会使我的应用程序变得非常缓慢。 我当时只显示 10 条记录(使用 array_slice),但在此之前我总是需要获取所有数据,因为它来自不同格式的不同来源,我看不出有任何方法可以限制从返回的数据量每次通话。

有什么建议吗?

【问题讨论】:

  • 大有多大?您是否分析过您的应用程序以查看是否真的存在性能问题?另外,为什么在创建最终结构之前必须合并数组。为什么你不能在获取它们后将各种源推送到目标结构中?除了随机提示之外,没有足够的关于您的设置的信息。
  • 我将其称为“一般准则”而不是“随机提示”:)
  • 好的。感谢所有回复。目前使用该应用程序的用户很少,因此数据量很小。我将遵循建议并分析我的应用并进行一些测试,

标签: php arrays size limit


【解决方案1】:

每次调用的数据都是特定的吗?您可以预处理数据,例如在第一个请求中获取它并将其存储在临时表中,这样下一个请求就可以从表中加载。您可以定义刷新率,并在刷新率时间过后进行完全重新加载。此外,如果您可以访问诸如 cron 作业之类的内容,它们可能就是您正在寻找的解决方案。

【讨论】:

    【解决方案2】:

    我会做一些单元测试和全局测试来尝试找出不断增长的数组是否真的有问题。

    如果是,我想我会将应用程序分为两部分,一个是获取数据并解析它,两个是正确的格式,另一个是使用数据并向用户显示 10 条记录,你可以做一个背景应用程序,例如用于数据处理的 Python 和用于用户可视化的 PHP 前端。

    HTH 问候。

    【讨论】:

      【解决方案3】:

      不要将所有数据加载到内存中。使用 mySQL 的 LIMIT 和数据库包装器的 fetch_row 方法来减少需要加载到脚本内存中的记录数。

      【讨论】:

        猜你喜欢
        • 2017-12-02
        • 2012-01-05
        • 1970-01-01
        • 1970-01-01
        • 2013-02-17
        • 1970-01-01
        • 2013-07-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多