如何在php中存储大量数据?

Posted

技术标签:

【中文标题】如何在php中存储大量数据?【英文标题】:how to store a huge amount of data in php? 【发布时间】:2011-07-17 23:18:36 【问题描述】:

我必须通过 php 代码从 db 中搜索大量数据。我不想给很多分贝命中。所以我选择了要搜索的数据库中的所有数据并尝试将其存储在数组中以对数组而不是数据库进行进一步搜索,但问题是数据超出了数组的限制。 怎么办?

【问题讨论】:

SQL 专为搜索而量身定制。您能更准确地说明您要做什么吗? 【参考方案1】:

不要那样做。

数据库是专门为处理大量数据而设计的。数组不是。

最好的办法是正确索引您的数据库,然后编写优化查询,从数据库中获取您需要的数据。您可以使用 PHP 来构造查询。您可以通过良好的查询从数据库中获取几乎任何内容,无需 PHP 数组处理。

如果您给出了具体示例,我们可以帮助您构建该 SQL 查询。

【讨论】:

我完全同意。事实上,昨天一位同事问我关于在 PHP 中遍历数据数组以某种排序方式搜索和提取行的问题。我告诉他:“你为什么不按xxx订购?”,“你为什么不使用视图?”,“你为什么不......”。经过几分钟的交谈,我们同意需要重新设计数据模型,哈哈【参考方案2】:

数据库可以为您过滤数据。尽可能使用最准确的查询,仅当在 SQL 中太难(或不可能)执行时才在代码中过滤。

一个完整的表选择可能比正确索引的select 和适当的where 子句(s )。

【讨论】:

【参考方案3】:

从数据库获取记录到 PHP 会涉及到通信开销,因此减少从 PHP 到数据库的调用次数不仅是一个好主意,而且尽量减少数据库并在您的 PHP 代码中处理。您应该构造您的查询(取决于数据库的类型)以只返回您需要的条目或尽可能少的条目来满足您需要做的任何事情。有很多数据库直接在数据库查询中支持相当复杂的操作,通常数据库会比 PHP 更快。

【讨论】:

【参考方案4】:

两个简单的步骤:

    通过 memory_limit 设置增加 php 可以使用的内存量

    安装更多内存

说真的,您最好以一种可以快速提取您需要处理的数据的方式优化您的数据库。

如果您确实遇到了问题,请运行查询分析器以查看哪些查询花费了太多时间。修复它们。重复这个过程。

【讨论】:

【参考方案5】:
    您不需要将数据存储在数组中,这没有任何意义。根据您的目的构建您的查询,然后使用 PHP 获取数据。 如果您需要增加内存限制,您可以在 php.ini 中更改 memory_limit(或将 .htaccess 更新为所需的内存限制 php_value memory_limit '1024M') 最后但同样重要的是 - 使用分页,而不是一次加载整个数据。

【讨论】:

以上是关于如何在php中存储大量数据?的主要内容,如果未能解决你的问题,请参考以下文章

存储大量图像

在数据库中存储大量标记的最佳方法是啥?

如何在桌面应用程序中存储“大量”数据?

大量数据和 PHP 错误

如何在实时应用程序中存储大量数据

Java如何获取Redis中存储的大量内容?