Отказоустойчивый способ препятствовать тому, чтобы библиотека изображений GD исчерпала память? (PHP)

Отношение комментариев, которые включают профанацию в комментарии, которые не делают.

Выше = лучше кодируют.

6
задан deceze 13 July 2009 в 02:16
поделиться

4 ответа

Купите больше памяти! :-P

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

Лучше всего ограничить размер загружаемого изображения на основе текущих настроек памяти.

3
ответ дан 17 December 2019 в 00:13
поделиться

Лучше всего перестать пытаться вычислить, сколько оперативной памяти ему потребуется, и просто довести его до максимума с самого начала - если у вас есть 4 ГБ, скажите сценарию изображения использовать между 2 и 4 ГБ или около того, и когда скрипт завершится, верните его в нормальное состояние, что покроет все потенциально фатальные ситуации. Это единственный "отказоустойчивый" способ, который я могу придумать ...

0
ответ дан 17 December 2019 в 00:13
поделиться

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

Изменить: чтобы поймать ошибку нехватки памяти, вы можете использовать следующее решение: http://au2.php.net/set_error_handler# 35622

1
ответ дан 17 December 2019 в 00:13
поделиться

Чтобы отловить фатальные ошибки PHP, такие как «Недостаточно памяти» или «Неустранимая ошибка PHP: разрешенный размер памяти 8388608 байт исчерпан (попытался выделить… байтов) в», см. Здесь: http://php.net/manual/en/function.set-error-handler.php#88401

0
ответ дан 17 December 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: