Некоторые объяснения того, почему класс использует так много памяти:
Метод $ image-> load () в используемом классе вызывает imagecreatefromjpeg () / imagecreatefromgif () / imagecreatefrompng () (в зависимости от формата исходного файла) и загружает изображение в память.Насколько я понимаю, библиотека GD хранит изображения в растровом формате, находясь в памяти, которые, очевидно, намного больше, чем сжатый файл, который вы загрузили с диска.Вы можете рассчитать объем памяти, необходимый с помощью уравнения:
ширина изображения * высота изображения * глубина цвета / бит на байт
В приведенном выше примере это:
4400 *3500* 24/8 = 46,2 МБ (примерно)
И это только для загрузки исходного изображения, оно становится хуже !: p
Чтобы выполнить изменение размера, класс создает чистое полноцветное изображение с новыми размерами, а затем повторно помещает исходное изображение в памяти в новое.Это означает, что в момент выполнения скрипта у вас есть два растровых изображения, которые хранятся в памяти.Умножьте это на число одновременных пользователей, запускающих скрипт, и добавьте накладные расходы на все остальные ваши PHP-вещи, и вы обнаружите, что, вероятно, используете много памяти!
См. Эту ветку для некоторых примеров:http://www.webdeveloper.com/forum/showthread.php?t=182328