2014-03-12 74 views
0

我正在構建一個涉及不同對象集合的窗體。基本上,我給出了開始日期和結束日期,然後javascript會生成很多時間數據原型,因此,我可以生成大量的線。大集合的Symfony2窗體

據我所知,我不能指望處理數千行,但在這裏我的程序顯示一個錯誤:當我生成約40行時,內存耗盡。更精確地說,Symfony2中顯示一個白色的屏幕,當我進入dev.log,我得到:

[2014-03-12 14:45:59] emergency.EMERGENCY: Allowed memory size of 33554432 bytes exhausted (tried to allocate 16 bytes) {"type":1,"file":"Symfony/Component/HttpKernel/DataCollector/Util/ValueExporter.php","line":29} []

當程序達到形式 - > CreateView的)蒙山40個單位線(這個錯誤被觸發()在他們被添加到我的數據庫中之後。

如果我增加實體數量,symfony2甚至不會將它們存儲在數據庫中。有沒有辦法,使用symfony窗​​體邏輯來避免這些錯誤,或者我應該看看其他方式來生成窗體和該對象的視圖?

回答

1

您的內存限制設置爲32 MiB,這是非常適度的限制。考慮到Symfony本身在開發環境中使用大約25 MiB的內存,您可以對此做很多事情。

我增加了你的記憶限制到一定的水平,128 - 256 MiB應該沒問題。爲此,請在php.ini文件中修改memory_limit指令:

memory_limit = 256M 
+0

謝謝。它肯定有幫助。但是我認爲我必須改變一下代碼的工作方式,因爲我遇到了一些奇怪的錯誤(比如當涉及這個大集合時,剖析器不能很好地工作)。可能是在大規模收集上形成 - >綁定()或form-> createView不是很好的做法。或者是? –

+0

1.定義「大集合」。它是100,1000還是10000個元素的集合? 2.您應該繼續使用由Symfony提供的「默認」表單處理架構。 – Crozin

+0

它可能相當大。原則是你給我的JavaScript開始日期和結束日期。然後它會爲這兩個日期之間的每個日期生成一個數據原型行。合理的,我認爲這個對象可能要處理大約100行。然後每行包含至少2個對象(通常多一點,我會說每行最多10個對象)。在後端,我堅持存儲開始日期,結束日期和週期的父對象。我也存儲這個父母的每一行。 –