加载大表时,Select2崩溃

时间:2014-07-14 23:51:06

标签: apache symfony doctrine-orm xampp jquery-select2

我目前正在尝试加载一张大表(8800行/2.5 MiB),但它崩溃了。在Chrome F12中,我收到错误:

POST http://localhost/web/app_dev.php/_entity_find 500 (Internal Server Error) main.js:3
k.cors.a.crossDomain.send main.js:3
n.extend.ajax main.js:3
(anonymous function)

(main.js是我编译的包含select2的JS)

我还有其他' select2 autocomplete'在同一页面上搜索较小的表格的字段,这些字段完全正常。

查看Apache error.log我有这个错误:

[client ::1:55760] AH00124: Request exceeded the limit of 10 internal
redirects due to probable configuration error. Use 'LimitInternalRecursion'
to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.,
referer: http://localhost/web/app_dev.php/user/prod/new

如果我将字段作为普通选择字段加载它加载精细,相当大并且需要大约7秒但加载所有相同。

使用Symfony 2.4。*,Doctrine2和select2的最新下载。

修改

好吧,在删除除2行以外的所有内容之后,只是为了测试一些小的表,我发现它仍然无法加载。我现在重建了表格,但带有标准自动增量的ID列。以前我正在导入一个大型数据集,其中包含一个从1001开始的Id表,不幸的是,只要我的挖掘已经发现它被设置为Primary而打破了Select2。不知道如何或为什么,但至少它现在有效。我希望这可以节省别人挖掘的日子,只是为了找到你在错误的区域完全挖掘。

2 个答案:

答案 0 :(得分:1)

首先,在调试模式(app_dev.php)中加载大量数据会在内存中加载更多数据,即对于包含100个项目的简单列表,它将加载类似3x内存的内容,而不是生产模式, #39;由记录器,秒表和类似的调试工具引起的。

其次,对于此类数据量,您应该对Select2使用ajax甚至ajax infinite设置,可能使用preloaded items。通过这种方式,您可以访问更多网站,但不会崩溃,也不会正常呈现。

答案 1 :(得分:0)

好吧,在删除除2行以外的所有内容之后,只是为了测试一些小的表,我发现它仍然无法加载。我现在重建了表格,但带有标准自动增量的ID列。以前我正在导入一个大型数据集,其中包含一个从1001开始的Id表,不幸的是,只要我的挖掘已经发现它被设置为Primary而打破了Select2。不知道如何或为什么,但至少它现在有效。我希望这可以节省别人挖掘的日子,只是为了完全找到你在错误地区的挖掘。

如果有人能解释原因,我很乐意接受你的回答。