2015-08-04 3 views
0

У меня есть страница в Symfony2, которая отображает список результатов поиска в таблице. Я использую библиотеку JS gridify для отображения результата, поэтому у меня нет проблем с браузером, но с Symfony2.Symfony2: память, израсходованная в рендерере

Когда у меня есть много результатов (например, 40 000), у меня есть исключение

php.CRITICAL: Fatal Error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 59233802 bytes) 

выброшен из PhpEngine-> оценки, которая делает:

ob_start(); 
require $this->evalTemplate; 
$this->evalTemplate = null; 
return ob_get_clean(); 

Исключение памяти на ob_get_clean встречается,. Я думаю, что включенный шаблон слишком велик, чтобы его можно было включить. Предел памяти в настоящий момент равен 512 М, я не хочу его увеличивать еще раз (но с 1024 М у меня больше нет проблем).

Есть ли какой-либо способ (правильный или нет) в Symfony2 обходить его?

+0

Память - это жесткий предел. Вы не можете обойти его, но если вы поделитесь тем, как вы создаете свой набор результатов, возможно, его можно будет оптимизировать. В конце концов, убедитесь, что вам действительно нужно 40 000 результатов сразу. Как бы то ни было, я думаю, что этот вопрос слишком широк. – k0pernikus

+1

Вы должны сделать paginate результат – smarber

ответ

0

Технически вы можете увеличить memory_limit во время выполнения этой строки кода:

ini_set('memory_limit', '1024M') 

но хостинг-провайдер, возможно, поставить на место некоторые способы, чтобы предотвратить это.

В любом случае, как и другие, вы можете узнать, почему так много памяти потребляется и, возможно, оптимизирует весь процесс.

Смежные вопросы