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

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

Сейчас я использую сценарий "cobbled-Together", который сначала выдаетini_set('memory_limit', '128M')Если это работает, я обычно все готово. Однако в зависимости от конфигурации сервера это может быть невозможным, поэтому я прибегаю к алгоритму, который пытается оценить объем необходимой памяти (с учетом разрешения, глубины цвета, каналов и коэффициента выдумки), а затем сравнивает его сmemory_get_usage() если функция существует, в противном случае выполняется грубая оценка.

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

Ответы на вопрос(6)

Ваш ответ на вопрос