Я использую KnpSnappyBundle 1.6.0 и wkhtmltopdf 0.12.5 для создания PDF-файлов из HTML в PHP, например:
$html = $this->renderView(
'pdf/template.html.twig',
[ 'entity' => $entity, ]
);
return new PdfResponse($snappy->getOutputFromHtml($html,
['encoding' => 'UTF-8', 'images' => true]), 'file'.$entity->getUniqueNumber().'.pdf'
);
Моя проблема: на моем рабочем сервере, когда я ссылаюсь на ресурсы (изображения или CSS), находящиеся на одном сервере, создание PDF занимает около 40-50 секунд. Даже когда я использую только крошечное изображение на том же сервере, это занимает 40 секунд. Я мог бы использовать изображения намного большего размера, которые размещены на другом сервере, и генерирование PDF будет происходить мгновенно.
Мой сервер не медленно обслуживает ресурсы или файлы в целом. Если я просто отображаю HTML как страницу, это происходит мгновенно (с активами или без них). Когда я локально запрашиваю ресурсы с моего производственного сервера для создания PDF, это также происходит мгновенно.
Все ресурсы, которые мне нужны в HTML, которые должны быть отображены в PDF, имеют абсолютные URL-адреса, это необходимо для работы wkhtmltopdf. Например: <img src="https://www.example.com/images/logo.png">
Сложно то, что все работает, но очень медленно. Там нет указания на несуществующий актив, который может привести к тайм-ауту.
Сначала я подумал, что это может быть связано с wkhtmltopdf, поэтому я пробовал разные версии и разные настройки, но это ничего не изменило. Я также пытался указать на другой домен на том же сервере, проблема остается. Так что теперь я думаю, что это проблема с сервером. Я использую Nginx-1.16.1 и обслуживаю весь контент по SSL. У меня установлена libssl-dev1.1.1d-1 (последняя стабильная версия), и у меня установлена ОС Ubuntu 18.04.3 LTS .
Когда я просматриваю логи доступа Nginx, я вижу запрос на получение по моему собственному IP-адресу при использовании ресурсов с того же сервера. Я не могу понять, почему это занимает так много времени, и у меня закончились идеи, что делать дальше. Любые идеи приветствуются!