2014-12-02 63 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