Мне следует предвосхитить этот ответ, сказав, что я ничего не знаю о SugarCRM - мой ответ основан исключительно на моих знаниях Zend_Pdf
.
Если мое понимание верно, у вас есть скрипт PHP (надеюсь,1004 * не работает внутри Apache, учитывая время, которое потребуется для обработки 5000 файлов), который принимает несколько файлов PDF в качестве входных данных с использованием метода Zend_Pdf::load()
, а затем перебирает страницы каждого объекта PDF и добавляет их водин целевой экземпляр Zend_Pdf
, который вы затем записываете в файл с использованием метода save()
.
Используя этот подход, даже если вы unset()
каждый из исходных объектов PDF после добавлениястраниц до целевого объекта PDF, вам все равно потребуется достаточно памяти для хранения всего выходного файла.Если вы пропустили 250 МБ только с 457 файлами, то я предполагаю, что ваши входные PDF-файлы, вероятно, имеют размер около 500 КБ, поэтому ваш выходной файл будет абсолютно огромным, поэтому у вас все равно будет нехватка памяти.
Мой совет - полностью отказаться от этого метода и использовать вместо него pdftk
, который можно вызвать с помощью функции exec()
.Я уверен, что есть ограничение на размер аргументов, которые вы можете предоставить exec()
, так что, вероятно, это будет многоэтапный процесс с несколькими промежуточными файлами, но в конечном итоге я думаю, что это будет более быстрое и надежное решение.
И просто для повторения более ранней точки, я бы не запустил этот процесс в Apache.Я бы настроил cron
задание, которое запускается с соответствующими интервалами и помещает выходной файл в безопасную область на вашем веб / файловом сервере.