Проблема утечки памяти с PHP и queryFontMetrics от Imagick

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

Я создал небольшой код для проверки:

gc_enable();

$draw = new ImagickDraw();
$draw -> setFont($fontFile);
$draw -> setFontSize($fontSize);

$imagick = new Imagick();
$bbox = $imagick -> queryFontMetrics($draw,$text);  

$draw->clear();
$draw->destroy();
$imagick->clear();
$imagick->destroy();
unset($draw,$imagick);
gc_collect_cycles();

return $bbox;

Я запускаю этот код в цикле с 1000 итерациями. Когда я запускаю этот код в командной строке php, проблем нет, память полностью освобождается. Но когда я запускаю его с помощью Apache, память не освобождается. Я тестировал этот код на сервере Debian 12 с PHP 8.2, apache2 2.4.59, Imagick 3.7.0 и ImageMagick 6.9.11-60.

Что-то я делаю не так? Спасибо за вашу помощь !

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После нескольких поисков я попытался сменить версию imagemagick, и это решило проблему. Итак, если у вас возникла эта проблема, проверьте версию imagemagick, у меня это была версия 6.9.11-60.

На какую версию вы перешли? Я использую Imagemagick 6.9.11-60, и у меня точно такая же проблема.

Caeden 20.07.2024 05:10

Можете ли вы также более подробно описать, как вам удалось решить вашу проблему?

Caeden 20.07.2024 05:26

Я установил ImageMagick 7.1.1-35, для этого мне пришлось удалить пакет php-imagick, и я установил вручную imagemagick, а затем imagick.

Wylls 21.07.2024 09:49

Другие вопросы по теме

Утечка памяти с использованием NVML от Nvidia
Ошибка сегментации (сброс ядра) при чтении двоичного файла, memmove-vec-unaligned-erms.S: Нет такого файла или каталога
Утечка памяти Haskell, работающая с зонированным временем и добавляющая/вычитающая секунды
Утечка памяти с использованием статического члена unique_ptr
Утечка памяти, которую не устраняет GC в отношении .Net Entity Framework версии 8 (консольное приложение C# .Net8.02)
ASAN показывает утечку памяти через конфигурацию отладки CMAKE, но не показывает утечку памяти через конфигурацию выпуска CMAKE. Почему?
Каковы возможные объекты GDI, которые могут быть обнаружены, но не перечислены как известные типы объектов GDI?
Кадр сопрограммы автоматически уничтожается и освобождается (т.е. освобождается выделенный кадр?) после co_return?
Как исправить IntersectionObserver, вызывающий утечку памяти в моем веб-приложении OpenLayers?
Деструктор связанного списка Object Pascal оставляет один блок несвободным