Итак, у меня есть php-скрипт, который берет PDF и конвертирует его в изображения JPEG.До сегодняшнего дня все было хорошо, но сегодня я получил этот PDF, который по какой-то причине стал причиной генерации очень больших файлов в моем каталоге /tmp
(например, ~ 14 гигабайт, а сам файл PDF ~ 18 МБ).
Вот этот PDF-файл:
https://www.ciamarket.lt/sites/default/files//failai/leidinys_01.15-28-compressed.pdf
А вот соответствующий код:
<?php
$userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36';
$response = $this
->httpClient
->request(
'GET',
$url,
[
'headers' => [
'User-Agent' => $userAgent,
],
]
);
$contents = $response->getBody()->getContents();
$tmpFilePath = tempnam(sys_get_temp_dir(), 'brochure_s');
$tmpFile = fopen($tmpFilePath, 'r+');
fwrite($tmpFile, $contents);
while (true) {
try {
$image = new \Gmagick();
$image->setResolution($width, $height);
$image->readimage($tmpFilePath . '[' . $i . ']');
$image->setImageFormat('jpeg');
$image->setCompressionQuality(75);
$image->resizeImage($width, $height, \Gmagick::FILTER_LANCZOS, 1, false);
$imageBlob = $image->getImageBlob();
$this
->uploader
->uploadData(
$imageBlob,
$brochureId,
'',
'jpg'
);
$image->destroy();
} catch (\Throwable $t) {
break;
}
}
Я извлек соответствующие биты из своего скрипта.
Я думаю, что строка 28 отвечает за создание огромного файла.
Есть идеи, как это можно решить?