Я уже много лет использую 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.
Что-то я делаю не так? Спасибо за вашу помощь !
После нескольких поисков я попытался сменить версию imagemagick, и это решило проблему. Итак, если у вас возникла эта проблема, проверьте версию imagemagick, у меня это была версия 6.9.11-60.
Можете ли вы также более подробно описать, как вам удалось решить вашу проблему?
Я установил ImageMagick 7.1.1-35, для этого мне пришлось удалить пакет php-imagick, и я установил вручную imagemagick, а затем imagick.
На какую версию вы перешли? Я использую Imagemagick 6.9.11-60, и у меня точно такая же проблема.