10/10/2018, 00:16

Lỗi khi resize file ảnh có kích thước lớn

Hôm trước em có làm cái code PHP upload và resize image. Khi upload và resize file ảnh có độ phân giải vừa phải (từ 1024x768 trở xuống) thì không vấn đề gì, nhưng khi upload và resize ảnh cỡ 1920x1200 px thì nó báo lỗi này:

Allowed memory size of 8388608 bytes exhausted (tried to allocate 7680 bytes) in includesuploadImg.php on line 10

Còn đây là code của file uploadImg.php của em:

PHP Code:
<?php
class image // start class

public function resizeImg($path$file_name$ext$file_tmp$newW$newH) { // start function resizeImg
$file $path.$file_name;
move_uploaded_file($file_tmp$file);
list(
$width$height) = getimagesize($file);
$tn imagecreatetruecolor($newW$newH);
if(
$ext == ".jpg" || $ext == ".jpeg") {
$image imagecreatefromjpeg($file);
}elseif(
$ext == ".png"){
$image imagecreatefrompng($file);
}else{
$image imagecreatefromgif($file);
}

imagecopyresampled($tn$image0000$newW$newH$width$height);

if(
$ext == ".jpg" || $ext == ".jpeg") {
            
imagejpeg($tn$file100);
            }elseif(
$ext == ".png"){
            
imagepng($tn$file100);
            }else{
            
imagegif($tn$file100);
            }
// end function resizeImg
// end class
?>
Line 10 ở đây là cái dòng $image = imagecreatefromjpeg($file);

Em chẳng biết lỗi này ra sao? Bác này biết giúp em.
zoejoe viết 02:25 ngày 10/10/2018
Có vẻ như file ảnh quá lớn, php handle không nổi (do giới hạn bộ nhớ được phép thực thi)
s.code viết 02:24 ngày 10/10/2018
Vào php.ini sửa lại cái thông số memory là OK. Mặc định là 2MB (hình như thế). Còn trên host thì nó thay đổi sẵn rồi. THường > 8MB (hình như thế)
zoejoe viết 02:28 ngày 10/10/2018
Tìm đến dòng nì trong php.ini :
Code:
max_execution_time = 30     
; Maximum execution time of each script, in seconds
max_input_time = 60	
; Maximum amount of time each script may spend parsing request data
memory_limit = 8M      
; Maximum amount of memory a script may consume (8MB)
sacroyant viết 02:25 ngày 10/10/2018
Cái này có ảnh hưởng đến phần MySQL khi chúng ta import data không Zoe ơi ?
zoejoe viết 02:30 ngày 10/10/2018
Được gửi bởi sacroyant
Cái này có ảnh hưởng đến phần MySQL khi chúng ta import data không Zoe ơi ?
Em cũng không bít nữa, mà cũng chưa thử lànnào. Imord dữ liệu dạng binary cho MySQL em nghĩ sẽ làm chậm trang mình đi
sacroyant viết 02:24 ngày 10/10/2018
Được gửi bởi zoejoe
Em cũng không bít nữa, mà cũng chưa thử lànnào. Imord dữ liệu dạng binary cho MySQL em nghĩ sẽ làm chậm trang mình đi
Thế thì để lát tớ thử xem sao. À, mà đây là nói về chỗ backup database ấy Zoe. Tớ đang dùng gói AppServ 2.5.8 để test ứng dụng, nhưng khi export, dù chọn tất cả các bảng, nhưng nó chỉ tạo ra được file có dung lượng 916 KB. Cậu đã dùng thử cái đó chưa ? cấu hình lại ở đâu để có thể export cho thuận tiện hơn ? Import thì maximum chỉ có 2014 KB, làm sao mở rộng giới hạn này ?
jiSh@n viết 02:23 ngày 10/10/2018
Được gửi bởi sacroyant
Thế thì để lát tớ thử xem sao. À, mà đây là nói về chỗ backup database ấy Zoe. Tớ đang dùng gói AppServ 2.5.8 để test ứng dụng, nhưng khi export, dù chọn tất cả các bảng, nhưng nó chỉ tạo ra được file có dung lượng 916 KB. Cậu đã dùng thử cái đó chưa ? cấu hình lại ở đâu để có thể export cho thuận tiện hơn ? Import thì maximum chỉ có 2014 KB, làm sao mở rộng giới hạn này ?
Ko biết bạn export bằng tool gì nhưng đa phần các tool đều cho ra file sql dạng text, có thể giảm dung lượng bằng cách nén gzip. Còn muốn tăng dung lượng import thì phải thay đổi thiết lập php.ini để tăng max upload size lên.
seaurchin viết 02:23 ngày 10/10/2018
Thank các bạn zoejoe, s.code nhiều nhé
zoejoe viết 02:16 ngày 10/10/2018
Được gửi bởi sacroyant
Thế thì để lát tớ thử xem sao. À, mà đây là nói về chỗ backup database ấy Zoe. Tớ đang dùng gói AppServ 2.5.8 để test ứng dụng, nhưng khi export, dù chọn tất cả các bảng, nhưng nó chỉ tạo ra được file có dung lượng 916 KB. Cậu đã dùng thử cái đó chưa ? cấu hình lại ở đâu để có thể export cho thuận tiện hơn ? Import thì maximum chỉ có 2014 KB, làm sao mở rộng giới hạn này ?
Em chưa thử lần nào, nên cũng hông bik làm seo nữa Backup bằng phpmyadmin thì nó cho ra file text, em thấy các host có hỗ trợ cpanel có backup site mình ra dạng nén gzip, trong phần backup của host, làm cái này dễ hơn là backup bằng phpmyadmin
Bài liên quan
0