Ошибка ограничения памяти php mpdf

Впервые я использовал библиотеку mpdf, и все работало нормально. Я написал скрипт для создания pdf-файла, состоящего из таблицы из 274 строк. Когда я запускаю скрипт, я получаю ошибку памяти php. Я пробовал другой сценарий, но получаю ту же ошибку памяти. Пожалуйста, помогите мне решить эту ошибку. Ниже я перечислил другой сценарий и его результат.

php.ini = memory_limit = 256M

script = ini_set('memory_limit', '25M');

Result:
memory_get_usage() = 12.75 mb
memory_get_peak_usage() = 12.75 mb
Fatal error: Allowed memory size of 26214400 bytes exhausted
(tried to allocate 261904 bytes)
in C:\xampp\htdocs\XX\lib\pdf\mpdf\mpdf.php on line 14268

php.ini = memory_limit = 256M

script = ini_set('memory_limit', '-1');

Result:
memory_get_usage() = 12.75 mb
memory_get_peak_usage() = 12.75 mb
Fatal error: Out of memory (allocated 1898971136)
(tried to allocate 261904 bytes) 
in C:\xampp\htdocs\XX\lib\pdf\mpdf\mpdf.php on line 14265

person sravis    schedule 18.03.2013    source источник
comment
ini_set('memory_limit', -1); var_dump(ini_get('memory_limit')); Подтвердите, что ваши изменения устанавливаются.   -  person Mike B    schedule 18.03.2013
comment
@Mike B Выводит это = строка (2) -1   -  person sravis    schedule 18.03.2013
comment
Итак, что-то еще устанавливает ограничение памяти на 25.   -  person Mike B    schedule 18.03.2013
comment
Любая идея исправить это? :-(   -  person sravis    schedule 18.03.2013
comment
Можете ли вы изолировать проблемную часть HTML? Например, помогает ли это уменьшить его или удалить таблицы стилей и т. д.? Помогает ли это, если вы запустите его через DOMDocument (loadXhtml + saveHtml), чтобы исправить проблемы с вложенностью? Можете ли вы выделить код, вызывающий проблемы с памятью в mpdf?   -  person Gerard van Helden    schedule 10.08.2015
comment
Избегайте использования BORDERS в mpdf, это может уменьшить потребление памяти.   -  person reignsly    schedule 10.08.2015


Ответы (4)


Использование памяти таблиц может быть уменьшено с помощью нескольких опций. официальный документ здесь

person flm    schedule 07.08.2013
comment
Приятель, мне очень нужен твой ответ, но ссылка, которую ты разместил, не работает. Можете ли вы отредактировать свой ответ, вставив соответствующую информацию? - person Jose Manuel Abarca Rodríguez; 09.05.2016
comment
В частности, попробуйте $mpdf->packTableData = true; или $mpdf->packTableData = true; (по ссылке на случай, если в будущем она сломается). В противном случае воспользуйтесь скриптом compress.php, включенным в mpdf. - person Sablefoste; 27.12.2016
comment
Хороший ответ содержит львиную долю советов, жестко вставленных в ответ. Stackoverfow не пытается быть регулировщиком трафика, это значит хранить знания прямо здесь (до тех пор, пока они будут жить, пока смерть не разлучит нас) - person mickmackusa; 27.06.2019

Вы пытались увидеть вывод phpinfo(), чтобы увидеть, меняется ли значение memory_limit, которое вы устанавливаете? попробуйте поместить эту функцию в начало вашего index.php файла и посмотрите, ini_set('memory_limit', '256M'); она вступит в силу.

С Уважением!

person BruneX    schedule 08.08.2015

mPDF использует много памяти на сервере. Если вы получаете сообщение об ошибке, что вы превысили лимит памяти, попробуйте следующее:

В очень длинных документах более эффективно обрабатывать код HTML небольшими фрагментами, а не использовать одну большую строку HTML ini_set("memory_limit","128M") или аналогичную в верхней части вашего скрипта, чтобы выделить больше памяти для создания меньшего mpdf .php файл.

ini_set("memory_limit","128M"); $mpdf = новый \Mpdf\Mpdf();

это работает !!!

Подробнее: https://mpdf.github.io/troubleshooting/memory-problems.html

person Ratana Dev    schedule 15.06.2018

Я обнаружил, что несинхронизированные теги (‹/table›) могут вызвать проблемы с памятью (и скоростью); очистка HTML, входящего в mPDF, решила эту проблему.

person user1432181    schedule 09.12.2014