Задать вопрос
@Mihail_Mel

Как оптимизировать преобразование PDF в PNG?

Здравствуйте!
Преобразовываю PDF в PNG на сервере постранично
$location = "папка"; $location_file = "имя файла";
if($_FILES['filename_less']['name'] != ''){
  if(!mkdir($location, 0777, true)) 
   { echo "Не удалось создать директорию. Выполнение операции невозможно"; exit(); } 
   else
   {
     if(move_uploaded_file($_FILES['filename_less']['tmp_name'], $location_file)) 
     { 
       // преобразование файла pdf в png или jpeg
	$im = new Imagick();
	$im->setResolution(300,300);
	$im->readimage($location_file); 
 	$noOfPagesInPDF = $im->getNumberImages(); 
 	if($noOfPagesInPDF) 
	{ 
 	   for ($i = 0; $i < $noOfPagesInPDF; $i++) 
	  { 
 	    $url = $location_file.'['.$i.']'; 
 	    $image = new Imagick($url);
 	    $image->setImageFormat("png"); 
 	    $image->writeImage($location."/".($i+1).'_'.$way.'.png'); 
	    echo "Страница создана";
 	  }
      } else { echo "PDF не содержит страниц"; }
    } 
   else { echo "Файл не загружен. Обратитесь к администратору портала"; exit(); }
   }
}


и все работает но есть 1 момент - файл более 10 страниц выдает BAD GETWAY
а на хостере говорят что память съедается до 400мб, поэтому ввиду ограничений вирт хостинга извините....

как-то можно оптимизировать скрипт?

и есть ли возможность в консоли посмотреть какую-нибудь полезную для отладки информацию?
ну кроме времени выполнения скрипта...
  • Вопрос задан
  • 247 просмотров
Подписаться 2 Средний 3 комментария
Решение пользователя Boris Köln К ответам на вопрос (5)
@BorisKorobkov Куратор тега PHP
Web developer
Добавьте профилирование. Возможно, падает на readimage(), когда читает весь файл в память.
Попробуйте убрать этот код. А вместо определения количества страниц можно перебирать их все подряд, пока не будет ошибка, которую отловить try-catch

Оптимизировать тоже надо, но в любом случае переходите на VPS. Это стоит от 340 руб/месяц. Только на написание этого вопроса вы уже потратили время, которое стоит дороже месячной аренды.
Ответ написан