2014-12-02 60 views
2

如果我嘗試使用JMSSerializerBundle導出大量數據,我收到以下錯誤消息。使用JMSSerializerBundle導出大量數據

FatalErrorException: Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1332351 bytes) in /var/www/app/trunk/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php line 27

如果我導出這個包只有很少的記錄,一切工作正常。

$format = 'json'; 
$serializer = \JMS\Serializer\SerializerBuilder::create()->build(); 
$serializer->serialize($data, $format, SerializationContext::create()->enableMaxDepthChecks()); 

陣列$data的計數1917

我該如何處理這個問題呢?

回答

2

嘗試做某處你的腳本:

echo ini_get('memory_limit'); // To see how much memory you have 

,然後更新在php.ini文件中memory_limit的設置。重新啓動服務器並再次嘗試。

+0

目前我有128M,我增加了功能的memory_limit,我需要它256M「ini_set('memory_limit','256M')」。如果我修改我的「php.ini」並重新啓動php「/etc/init.d/php5-fpm restart」,我的修改對應用程序沒有影響。在ini文件中設置它會更好嗎? – smartcoderx 2014-12-02 08:37:40

+0

這取決於你是否希望將它放在所有東西的本地或只是在那裏。你看到不同的輸出回聲ini_get('memory_limit')或不?如果沒有,嘗試在ini中設置它(仔細檢查是apache ini而不是cli ini) – 2014-12-02 09:35:56

+0

這是正確的ini。如果我調用「phpinfo()」,我的pnp ini文件的路徑是「/etc/php5/fpm/php.ini」。我修改「memory_limit」並重新啓動「php5-fpm」和「apache」,但沒有任何事情發生。如果我調用「phpinfo()」,「memory_limit」不會修改。我不知道我該如何解決這個問題。是256M好的一個PHP應用程序,或者我應該增加這個? – smartcoderx 2014-12-02 14:39:34