|
|
|
| Загружаю, все фоты через форму..все нормально..но вот на одной выходит такое:
(и естественно не грузиться на сервер)...что это такое? и как это исправить?
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 12288 bytes
|
| |
|
|
|
|
|
|
|
для: bmW
(07.09.2008 в 11:51)
| | Памяти не хватает, дело в том, что на скрипт выделяется строго ограниченный объем оперативной памяти, за который он не может выйти, а если выходит возвращает эту ошибку. Скорее всего у вас на каждый скрипт выделсяется 32Мб и когда потребовалось 33Мб с гаком - возникала ошибка. Если работаете с библиотекой GDLib - почаще освобождайте ресурсы, если используете объемные массивы - удаляйте их, когда они больше не нужны, при помощи конструкции unset(). | |
|
|
|
|
|
|
|
для: cheops
(07.09.2008 в 12:12)
| | да, наверно это GDLib хотя я и массив использую(но он не настоко большой всё-таки), но я ставлю imagedestroy() но все в пустую...снова пишет и ссылается на строчку где
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
|
| |
|
|
|
|
|
|
|
для: BMW
(07.09.2008 в 13:07)
| | Вам причина ошибки ясна?
Какой размер у создаваемого изображения? Ширина, Высота? | |
|
|
|
|
|
|
|
для: Trianon
(07.09.2008 в 13:13)
| | нет, не ясна....вообщем скрипт уменьшает изображение и записывает его на сервер вот
<? $name_img=изображение;
$w=400;
$size_img = getimagesize($_FILES['myfile']['tmp_name'][encode($name_img)]);
$filename=$_FILES['myfile']['tmp_name'][encode($name_img)];
if($size_img[0]>$size_img[1])
{
$src_ratio=$w/$size_img[0];
$h=$size_img[1]*$src_ratio;
}
else
{
$h=$w;
$src_ratio=$h/$size_img[1];
$w=$size_img[0]*$src_ratio;
}
$dest_img = imagecreatetruecolor($w, $h);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
imagedestroy($src_img);
if($_FILES['myfile']['type'][encode($name_img)]=='image/jpeg') $my_type='jpg';
elseif($_FILES['myfile']['type'][encode($name_img)]=='image/gif') $my_type='gif';
elseif($_FILES['myfile']['type'][encode($name_img)]=='image/png') $my_type='png';
else {$bad_format=1; echo 'Íåêêîðåòíûé ôîðìàò ôàéëà';}
if(!$bad_format){
if($_FILES['myfile']['tmp_name'][encode($name_img)]) {
$img_name= $id_key.'.'.$my_type;
$uploaddir = $_SERVER['DOCUMENT_ROOT'].'/IMG/'.encode($name_img).'/';
unset($_FILES);
if ($size_img[2]==2) {imagejpeg($dest_img, $uploaddir .$img_name, 100); $po=1;}
else if ($size_img[2]==1) {imagegif($dest_img, $uploaddir .$img_name); $po=1;}
else if ($size_img[2]==3) {imagepng($dest_img, $uploaddir .$img_name); $po=1;}
imagedestroy($dest_img);
unset($size_img);
if ($po) {
print '<br>Çàãðóæåíî '.$img_name.' â êàòàëîã /'.encode($name_img).'';
echo '<img src="http://www.s.com/IMG/'.encode($name_img).'/'.$img_name.'">';
}
?>
|
PS загружаю изображение 1,5 Мб с 3700 X 2500 | |
|
|
|
|
|
|
|
для: BMW
(07.09.2008 в 13:28)
| | >нет, не ясна....
Повторяю еще раз. Выделенного объема оперативной памяти (32Мб) php-процессу не хватает для того, чтобы выполнить Ваш скрипт.
>PS загружаю изображение 1,5 Мб с 3700 X 2500
Для загрузки такого изображения GDlib'у требуется 5*3700*2500 байт (примерно 44Мб) . В распоряжении php имеется всего 32Мб.
Так яснее? | |
|
|
|
|
|
|
|
для: Trianon
(07.09.2008 в 13:45)
| | теперь ясно.... я просто не догадывался что размер картинки отличается от загрузки на сервер.... спасибо) | |
|
|
|
|
|
|
|
для: cheops
(07.09.2008 в 12:12)
| | Новую тему создавать не хочу, ошибка unable to allocate 9060 байт.. Почему появляется данная ошибка? Нехватка памяти или php под себя память выделить не может. | |
|
|
|
|
|
|
|
для: lgar
(07.09.2008 в 18:56)
| | >Новую тему создавать не хочу, ошибка unable to allocate 9060 байт.. Почему появляется данная ошибка? Нехватка памяти
Потому что при выделении очередных 9060 байт памяти был превышен предел.
Вы понимаете, что предел так или иначе когда-нибудь будет достигнут?
Так вот он оказался достигнут.
>или php под себя память выделить не может.
Под себя он выделил еще в момент запуска. Не смог бы выделить под себя - не запустился бы.
Он не может выделить под Вас - под желания программиста. | |
|
|
|
|
|
|
|
для: Trianon
(07.09.2008 в 21:39)
| | спасибо, теперь всё понятно. просто чаще встречал ошибку сколько использую, столько-то не хватает. | |
|
|
|
|
|
|
|
для: lgar
(07.09.2008 в 23:08)
| | >> Для загрузки такого изображения GDlib'у требуется 5*3700*2500 байт (примерно 44Мб) . В распоряжении php имеется всего 32Мб.
Почему первый множитель 5, откуда? | |
|
|
|