Tôi phải render một thứ gì đó bằng Imagick trên PHP CLI. Tôi nhận thấy rằng mỗi 3-5 ngày bộ nhớ máy chủ được đầy đủ, vì vậy tôi thậm chí không thể connet qua ssh hoặc ftp.Rò rỉ bộ nhớ PHP Imagick
với memory_get_usage() tôi đã thu hẹp rò rỉ bộ nhớ xuống phần tưởng tượng của tập lệnh. kịch bản trông giống như sau:
$sourceImg = 'source.png';
$destImg = 'dest.png';
$background ='#00ff00';
$im = new Imagick();
$im->pingImage($sourceImg);
$im->readImage($sourceImg);
$draw = new ImagickDraw();
for($i=1;$i<=5;$i++){
$draw->setFillColor($background);
$draw->rectangle(10*$i+5, 10, 10*$i+10, 20);
}
$im->drawImage($draw);
$im->writeImage($destImg);
$im->destroy();
unset($im,$draw);
tôi phá hủy các tài liệu tham khảo hình ảnh, và unset các imagick và đối tượng imagickDraw, nhưng kịch bản sẽ không phát hành bất kỳ bộ nhớ. Phương thức setFillColor() chiếm nhiều bộ nhớ nhất
Tôi có thể làm gì khác để giải phóng dung lượng được sử dụng bởi imageick không?
image of the memory consumption
tôi đã từ bỏ vấn đề này. nhưng giải pháp này hoạt động tốt. cảm ơn – Slemgrim
Bất cứ ai cũng biết bất cứ điều gì tương tự trong Java? – krakover
Vì vậy, nó sẽ điền vào đĩa thay vì RAM? Bộ nhớ cache này là gì? –