CakePhp中包含600 000+行的表

时间:2015-12-17 09:48:56

标签: php mysql cakephp

我必须在带有CakePHP的600 000+行的表(MySQL)上执行sql请求。 我在本地测试如何处理这张巨大的桌子。

当我第一次尝试使用简单的->find('all')时,使用CakePHP,我在缓冲区大小方面遇到了很多错误。 我添加

ini_set("memory_limit", "-1");
set_time_limit(0);

在我的index.php中

现在,我的页面加载了很长时间然后崩溃。

当我尝试->find('first')获取第一行时,同样的事情:页面加载很长时间后会遇到错误。

你有什么想法吗?

1 个答案:

答案 0 :(得分:4)

  

你有什么想法吗?

  1. Paginate it。
  2. 如果您不能对其进行分页,那么您必须实现一个在后台服务器端执行的作业队列并生成文档,然后将其提供给用户下载。
  3. 很明显,您无需处理某些技术限制即可处理大量数据。 600k行,取决于它们如何呈现,甚至客户端(浏览器)可能会变得非常慢。

    改变你对此的态度,它不会以这种方式运作良好。或者说几个 服务器中有一百GB的RAM。

    设置ini_set("memory_limit", "-1"); 从不一个解决方案,但是一个非常简单的解决方法。而是确保您的脚本始终在某些预定义的边界内工作。这样可以确保脚本在64mb的服务器上爆炸,但是在128mb的服务器上运行,然后在获得更多数据的情况下也可以在128mb的那个上爆炸。