Intereting Posts
sqlsrv_num_rows Не возвращает никакой ценности Выбрать узел на основе атрибута и изменить поднод Преобразование хэшей паролей md5 в PHP 5.5 password_hash () Как отправить электронную почту с помощью PHP с помощью пакета PEAR Mail со вложением Проблема с контактной формой – я получаю сообщения, но не содержимое (пустая страница) Проверить видимое качество изображения PHP для подключения к Hotmail для отправки электронной почты? Путаница PHP-типа Предотвратить xdebug для разрыва в первой строке индексного файла Функция электронной почты PHP () не работает на выделенном сервере GoDaddy Лучшие практики, позволяющие моим веб-пользователям загружать пользовательский .exe с моего сайта с помощью PHP Разница между sleep () и usleep () в PHP Xampp: веб-браузер не будет показывать страницу localhost Php – тестирование, если выбран переключатель и получить значение Включает ли Google crawl / require файлы в PHP?

Использует ли библиотека GD много памяти?

Я хочу использовать GD-библиотеку в своем PHP-скрипте для создания небольшого миниатюры случайного большого изображения с внешнего сервера. Каждый раз, когда вызывается страница, GD-библиотека будет восстанавливать миниатюру и показывать ее.

Будет ли это замедлять работу сервера или использовать необычный объем памяти?

GD использует много памяти. Он полностью загружает изображение в память и распаковывает его, поэтому вам потребуется как минимум 32 бита на пиксель. Изображение размером 800 x 600 затем использует:

800 * 600 * 32 бит = 15,4 мегабит = 2 МБ

Это только для загрузки изображения. Я слышал, что он будет использовать двойное значение, если вы измените размер, и если ваши изображения еще больше, это будет еще больше памяти.

Вы должны действительно подумать о кешировании ваших эскизов, чтобы их можно было создать только один раз (это ускорит страницу для ваших посетителей!).

Теперь я также читаю, что вы загружаете изображения с внешнего сервера, и в этом случае вы ДЕЙСТВИТЕЛЬНО должны кэшировать изображение, потому что иначе ваши посетители должны ждать, пока вы сначала загрузите все изображение. Это становится еще хуже, если внешний сервер отключен или перегружен, и вашим посетителям придется ждать тайм-аута (это будет выглядеть так, как будто ваша служба работает медленно). В дополнение к этому вы будете тратить много трафика, если вы загружаете изображение каждый раз, когда пользователь запрашивает его миниатюру.


Поскольку GD использует так много памяти, может быть целесообразно вместо этого генерировать эскизы, используя расширение IMagick. ImageMagick значительно улучшает потребление памяти, а также очень быстро (но вы должны кэшировать изображения по причинам, указанным выше).

уверен, что это замедлит работу сервера, это также зависит от размера используемого вами изображения. почему бы вам просто не сохранить миниатюру?

Зависит от того, что вы с ним делаете, но почему бы не попробовать себя:

  • memory_get_usage () – возвращает объем памяти, выделенный для PHP
  • memory_get_peak_usage () – возвращает пик памяти, выделенный PHP

Любая обработка изображений, вероятно, будет интенсивной в памяти.

Если вы можете кэшировать эти изображения, чтобы не регенерировать их при каждом попадании на страницу, это было бы отличным шагом.

Библиотека PHP, которая имеет дело с большим количеством этого кэширования для вас, – phpThumb – она, вероятно, идеально подходит для таких задач.

http://phpthumb.sourceforge.net/

Если вы создадите новую миниатюру для каждой загрузки страницы, потребуется дополнительное время обработки. В зависимости от количества изображений, которые вы эскизны, а также их первоначальных размеров, вы можете или не заметить замедленность. Если в любом случае вы можете создать миниатюру на первой загрузке страницы и сохранить ее и загрузить предварительно созданную версию для других загрузок страниц, вам будет лучше.