2013-04-15 5 views
-1

У меня есть сайт форума Drupal, в котором есть большие данные. Например, одна категория форума содержит 14 000 потоков и имеет 100 000 комментариев. Даже на моем местном сайте тестирования он очень лаги. Затем, когда я загрузил его на живой сайт, он дает эту ошибку:Как ограничить выделение памяти в запросе Drupal?

Fatal error: Allowed memory size of 52428800 bytes exhausted (tried to allocate 40961 bytes) in /home/fmotors/public_html/development/includes/theme.inc on line 1494 

Так что-то делать с увеличением лимита памяти, либо не запрашивать все темы сразу. Но я не знаю, как это сделать. Вот код, который попадает в ошибку выше:

function theme_render_template($template_file, $variables) { 
    extract($variables, EXTR_SKIP);    // Extract the variables to a local namespace 
    ob_start();         // Start output buffering 
    include DRUPAL_ROOT . '/' . $template_file; // Include the template file 
    return ob_get_clean();      // End buffering and return its contents 
} 

Вызов ob_start() находится на линии 1494. Кстати, я использую заранее форум модуль Drupal.

+0

Возврат меньше данных. Не видя вашего запроса, трудно детализировать. –

+0

Если Drupal - что-то вроде Wordpress, он может пытаться хранить все комментарии в памяти, даже если отображаемое вами представление разбито на страницы. Если это проблема, то поиск «drupal php уменьшить использование памяти» был бы хорошим первым шагом. При этом 50M может быть слишком маленьким для сложного PHP-приложения: попробуйте настроить 64 или 80M и посмотреть, работает ли это? – halfer

+0

@halfer где настроить этот 50M-80M? и как я не запрашиваю сразу все комментарии? да, они разбиты на страницы, и я подозреваю, что то, что вы говорите, верно в отношении того, что вы все равно, даже если оно разбито на страницы. –

ответ

0

в вашей настройке программы или индексного файла установить

ini_set('memory_limit', 0); 
+0

Разве это просто проблема над проблемой, а не ее исправление? Теперь есть еще одна потенциальная ошибка, когда скрипт может использовать слишком много системной памяти и еще больше затрудняет отслеживание ошибок. – siride

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