skalowanie zdjęcia

0

Witam

mam problem z przeskalowanie zdjęcia, pomijając ten fakt zatrzymuje mi skrypt, nie potrafię sobie z tym poradzić:

                        $org = @imagecreatefromjpeg($file);
                        if ($org) {
                        	$res_canvas = imagecopyresampled($canvas, $org, 0, 0, 0, 0, $width, $height, $imgW, $imgH);  
                        	if ($res_canvas) {
                            	$img_results = imagejpeg($canvas, $target_new_file, $quality);  
                        	} else {
                        		@imagedestroy($org);
                        		echo "Blad skalowania zdjecia (metoda @imagecopyresampled) <b>".basename($file)."</b> (".basename($target_new_file).")";                         		
                        		return false;
                        	}
                        } else {
                        	@imagedestroy($org);
                        	echo "Blad skalowania zdjecia (metoda @imagecreatefromjpeg) <b>".basename($file)."</b> (".basename($target_new_file).")";
                        	//throw new Exception('imagecreatefromjpeg failed');
                        	return false;
                        }

Na samej górze skryptu jest oczywiście set_time_limit(0);
Wyrzuca natępujący błąd:
Fatal error: Maximum execution time of 180 seconds exceeded in /script.php on line xxx

Jeśli np. dane zdjęcie jest nieporawne, pobieram inne, wykonuje to w pętli, najgorsze jest to, że zatrzymuje skrypt.

Co mogę z tym zrobić ? Nie mam już pomysłów ....

0

Tradycyjne i z reguły skuteczne zastosowanie bloku try-catach, też nie działa :

                        	try {
                        		$res_canvas = imagecopyresampled($canvas, $org, 0, 0, 0, 0, $width, $height, $imgW, $imgH); 
                        	} catch (Exception $e) {
                        		@imagedestroy($org);
                        		echo "Blad skalowania zdjecia (z bloku try-catch) <b>".basename($file)."</b> (".basename($target_new_file).")";
                        		return false;                        		
                        	}
0

Ustaw inny set time limit. Jeżeli nie możesz to zmień hosting. Jeżeli nie możesz - to http://php.net/manual/en/function.register-shutdown-function.php , żebyś chociaż mógł usunąć niedokończone pliki i wyświetlić lepszy komunikat - ale to taka kiepska opcja. A najlepiej to napisz te skalowanie zdjęć jako osobny, asynchroniczny task w oprogramowaniu, które piszesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1