Datatables 使用CakePHP构建处理大型数据集的应用程序?

Datatables 使用CakePHP构建处理大型数据集的应用程序?,datatables,cakephp-2.0,large-data,Datatables,Cakephp 2.0,Large Data,我正在使用Datatables JQuery插件1.9和CakePHP 2.4 我的应用程序是一个在线数据库接口。数据库并不是很大。我们只有26000张唱片。然而,我发现,即使使用recursive=-1,并且使用“Containable”行为,CakePHP仍然只能查找5000行,在出现内存耗尽错误之前,在视图中甚至需要5分钟才能加载 当然,使用LIMIT选项只是实验性的,因为我需要列出/分页/搜索整个数据库记录 我的问题是,是否有人构建了一个CakePHP应用程序来处理类似数量的行或更大的行

我正在使用Datatables JQuery插件1.9和CakePHP 2.4

我的应用程序是一个在线数据库接口。数据库并不是很大。我们只有26000张唱片。然而,我发现,即使使用recursive=-1,并且使用“Containable”行为,CakePHP仍然只能查找5000行,在出现内存耗尽错误之前,在视图中甚至需要5分钟才能加载

当然,使用LIMIT选项只是实验性的,因为我需要列出/分页/搜索整个数据库记录

我的问题是,是否有人构建了一个CakePHP应用程序来处理类似数量的行或更大的行??你是怎么做到的?如能提供有关您的方法的详细文档参考,将不胜感激

我已经花了一个星期的时间在CakePHP中设置数据表的服务器端处理,但是那里建议的解决方案/插件都不起作用(例如CNIZDOTCOM)。增加内存限制(高达1GB!)没有太大帮助


不幸的是,如果这种限制继续下去,这将是我们最后一次使用CakePHP。但就目前而言,找到问题的解决方案是非常关键的。

您真的需要在数据表上同时显示您的26k项吗

我会更改它并使用ajax分页。您仍然可以保持datatables分页,并向cakephp发出异步请求(cake应返回json),在该请求中,您需要通过
限制
页面
(您还可以通过
排序
方向
)作为参数

  • 在datatable的文档中搜索ajax源代码
  • 为这个ajax创建一个视图
  • 在此视图中,使用传递给视图的“页面”、“限制”、“排序”和“方向”参数创建项目分页(通过GET Probably)
  • 此视图应以datatables可以理解的格式返回json
但是如果您真的需要立即显示26k。。然后忽略这个答案


希望这能帮上忙

26000一次在一个视图中是相当多的,为什么选择不使用分页器组件/帮助器(因为您提到需要列出/分页/搜索)?调试表明问题出在find()语句。你认为用cakephp paginator替换Datatables插件会改变find()获取数据的方式吗?不是替换,只是考虑一下如何处理数据。例如,如果您执行
find('all')
的唯一目的是向用户显示一个简单的列表(并在获得26000条记录后自己实现分页),那么最好使用分页器,让cake担心其他一切。另一方面,如果您想使用控制器上的26000条记录并对其进行处理和处理,请尝试添加大量条件以避免获取所有内容。如果您完全需要所有记录,请共享您正在使用的代码,以便我们可以帮助您优化。Nunser,我们的find()语句太过优化,无法进行任何进一步的优化。循环内部没有find,也没有嵌套for循环,find()使用recursive=-1,“containable”行为,指定“fields”。是的,我们需要在控制器中处理26000条记录。不需要一次显示整个数据库。可以搜索/分页就足够了。我从来没有按你的方式做过,你有好的文档/教程/例子可以参考吗?谢谢,我会尽力搜索的。。但它是不同教程的混合。。我会试着收集它们