Я работаю над сценарием, который перечисляет все изображения в одном каталоге, а затем изменяет размеры и сохраняет в другом каталоге.
На моем общем сервере я получаю это сообщение:
Allowed memory size of 67108864 bytes exhausted (tried to allocate 600 bytes) in...
Вопрос заключается в следующем: если PHP может освобождать память после каждого создания изображения с помощью image_destroy (), почему цикл while, сохраняющий эти изображения, выходит за пределы памяти?
-
Код просто сохраняйте изображения, не более того. Проблема в количестве изображений, а не в одном огромном изображении. Каждое изображение имеет не более 300 КБ, сценарий останавливается посередине, и точного смысла нет. Каждый раз, когда он выполняется, он останавливается на некоторых изображениях.
foreach($images as $image)
{
$img = PhpThumbFactory::create($image);
$img->adaptiveResize(640, 450);
$img->createWatermark(PATH_TEMPLATE_SITE . 'img/watermark.png');
$img->save($dirBig . $id . '.jpg','jpg');
}
Класс, используемый в этом сценарии: PHPThumb и имеет деструктор:
public function __destruct ()
{
if (is_resource($this->oldImage))
{
imagedestroy($this->oldImage);
}
if (is_resource($this->workingImage))
{
imagedestroy($this->workingImage);
}
}
У меня уже есть та же проблема с сохранением изображений с помощью других сценариев. Я думаю, что проблема не в этом классе или других типах данных, используемых в скрипте.