Как стать автором
Обновить

Нехватка памяти на хостинге для обработки картинок

Время на прочтение1 мин
Количество просмотров4.3K
На моём сайте пользователи загружают картинки, которые уменьшаются до необходимого размера (максимальная сторона — 800 точек). И столкнулся с ограничением памятя для работы PHP скриптов, для обработки фотографий 7 мпикс уже не хватало памяти, а сейчас фотоаппараты и поболее будут, не заставлять же пользователей обрезать фотографии до отправки, многие вообще тогда не будут загружать их.

Ошибка была на строке:
$image = imagecreatefromjpeg($filename);
PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 3072 bytes) in…

Чтобы решить проблему, необходимо уменьшить исходную фотографию. ImageMagick на хостинге не оказалось, поэтому не знаю, можно ли было решить проблему через эту библиотеку.
Зато оказалось что можно выполнить внешнюю команду через exec();

Решение проблемы:
$filename = 'image.jpg';
$maxside = 800;
$size = getimagesize($filename);
if (($size[0] > $maxside) or ($size[1] > $maxside)) {
  exec ('mogrify -resize '.$maxside.'x'.$maxside.' '.$filename);
  $size = getimagesize($filename);
}
$image = imagecreatefromjpeg($filename);

P.S.: Поиск в гугле показал несколько форумов, где проблему предлагали решать в лоб — уменьшением лимита памяти, путём договорённости с админами хостинга.
Теги:
Хабы:
Всего голосов 16: ↑7 и ↓9-2
Комментарии21

Публикации

Истории

Работа

PHP программист
100 вакансий

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань