Тайм-аут сервера для тяжелой транзакции mpdf в приложении Codeigniter - PullRequest
0 голосов
/ 17 июня 2019

У меня есть код, который должен обрабатывать тяжелый набор данных и печатать его PDF с использованием библиотеки mpdf. Сервер завершает процесс через несколько секунд, из-за чего транзакция никогда не завершается. Если я получу 120 записей и сгенерирую PDF, все пойдет хорошо. Но для большого набора данных я получаю 504 ошибку времени ожидания сервера. Я попробовал следующие изменения в моем php-коде, но они не сработали:

ini_set("pcre.backtrack_limit", "10000000");
ini_set("max_allowed_packet ", "1024M");
ini_set("max_execution_time ", "1800");
ini_set('max_input_time','0');

В .htaccess я тоже попробовал следующее:

<IfModule mod_php5.c>
   php_value post_max_size 200M
   php_value upload_max_filesize 200M
   php_value memory_limit 300M
   php_value max_execution_time 259200
   php_value max_input_time 259200
   php_value session.gc_maxlifetime 1200
</IfModule>

но чудес не бывает.

1 Ответ

0 голосов
/ 19 июня 2019

Общие хостинги часто не позволяют менять настройки PHP. Или настройки можно изменить в интерфейсе администрирования хостинга, а не в файле .htaccess или в коде.

Но, как правило, генерировать большие PDF-файлы во время HTTP-запроса не очень хорошая идея.

Если доступно, используйте задание cron или очередь заданий.

Для получения самых быстрых результатов создайте несколько небольших PDF-файлов и объедините их с помощью внешней программы, такой как GhostScript.

В качестве альтернативы, вы можете попробовать использовать веб-сервис, если он поддерживает все ваши потребности. https://stackoverflow.com/a/5344424/819007

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...