Witam. Posiadam taki skrypcik uploadujący na serwer zdjecia za pomocą formularza. Niestety chyba coś jest z nim nie tak a mianowicie z jakiegoś powodu zużywa zbyt dużo pamięci operacyjnej. Np. podczas uploadu 3 zdjeć po 1,4 mb każde, wychodzi błąd krytyczny z informacją że ponad 20 MB pamieci zostało żużyte:
Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 6144 bytes) in...
Czy to normalne że skrypt zużywa tyle pamięci a jeśli nie to jak go zoptymalizować?
pozdrawiam
<?php
$zdjecia=array(1 => "zdjecie1", 2 => "zdjecie2", 3 => "zdjecie3"); foreach($zdjecia as $war => $var)
{
{
$err_msg = false;
do {
if(!isset($_FILES[$var])) {
$err_msg = 'Formularz nie został przesłany w całości';
break;
} else {
$zdjecie = $_FILES[$var];
}
switch ($zdjecie['error'])
{
case UPLOAD_ERR_INI_SIZE:
$err_msg = "Rozmiar zdjęć jest zbyt duży. Zdjęcie nie moze przekraczać $max_rozmiar_zdj
ecia MB";
break 2;
case UPLOAD_ERR_PARTIAL:
$err_msg = "Podczas wgrywania pliku wystąpił błąd, proszę <a href='form.php'>spróbować ponownie</a>";
break 2;
}
if(!in_array($zdjecie['type'], array('image/jpeg', 'image/pjpeg', 'image/png'))) {
$err_msg = "Zdjęcia muszą być w formacie JPEG lub PNG";
break;
}
} while (0);
if($err_msg)
{
} else {
$rozbita=explode(".", $_FILES[$var]['name']); $plik=$upload_dir . "/$war." . end($rozbita); chmod("$plik", 0777);
}
// resamplowanie i kopiowanie oryginalnych zdjec na miniatury
Header("Content-type: image/jpeg");
$newwidth ='241';
$newheight = '181';
switch($war)
{
case 1: $nazwa='a';
break;
case 2: $nazwa='b';
break;
case 3: $nazwa='c';
break;
}
$docelowy_obraz=$upload_dir . '/' . $nazwa . '.' . end($rozbita); $thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($plik);
imagecopyresampled($thumb, $source, 0,0,0,0,$newwidth, $newheight, $width, $height);
imageJPEG($thumb, $docelowy_obraz, 90);
imagedestroy($thumb);
// jesli mamy doczynienia z pierwszym zdjeciem tworzymy miniature na strone glowna
if($war==1)
{
Header("Content-type: image/jpeg");
$newwidth ='100';
$newheight = '75';
$nazwa="waf";
$docelowy_obraz=$upload_dir . '/' . $nazwa . '.' . end($rozbita); $thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($plik);
imagecopyresampled($thumb, $source, 0,0,0,0,$newwidth, $newheight, $width, $height);
imageJPEG($thumb, $docelowy_obraz, 90);
imagedestroy($thumb);
}
}
}
?>