У меня есть отчет, который может генерировать более 30 000 записей, если задан достаточно большой диапазон дат. С точки зрения HTML такой большой набор результатов не является проблемой, поскольку я реализовал систему разбиения на страницы, которая ограничивает видимые результаты до 100 в данный момент времени.
Моя настоящая проблема возникает, когда пользователь нажимает кнопку «Получить PDF». Когда это происходит, я повторно запускаю часть отчета, которая распечатывает данные (результаты самого отчета хранятся в таблице «сохранения», поэтому нет необходимости повторно запускать данные). логика сбора) и сохранить результаты в переменной с именем $html. Имейте в виду, что эта переменная теперь содержит 30 000 записей данных плюс HTML, необходимый для правильного форматирования в PDF. Создав эту HTML-строку, я передаю ее в TCPDF, чтобы попытаться сгенерировать PDF-файл для пользователя. Однако вместо создания файла PDF он просто вылетает без сообщения об ошибке (диалоговое окно «Создание PDF...») исчезает, и система ведет себя так, как будто вы никогда не просили ее что-либо сделать.
С помощью тестов я обнаружил, что проблема заключается в размере передаваемой переменной $html. Если отчет под 3K записей, он работает нормально. Если это больше, будет распечатана часть отчета в формате HTML, но не в формате PDF.
Полезная информация
- PHP 5.3
- TCPDF для генерации PDF (также пробовал PS2PDF)
- Ограничение памяти сценария: 500 МБ
Как бы вы, ребята, справились с этим масштабом данных при создании PDF-файла такого размера?