Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Out of memory
Форумы портала PHP.SU » Серверное администрирование » Apache и другие веб-серверы » Out of memory

Страниц (1): [1]
 

1. Serpanok - 06 Октября, 2011 - 00:04:28 - перейти к сообщению
Всем привет!

У меня выскакивает ошибка:

Fatal error: Out of memory (allocated 16515072) (tried to allocate 4608 bytes) in /usr/home/school4dnua/data/www/school4.dn.ua/bl/add_photo.php on line 41

при выполнении банально простого задания =)

CODE (htmlphp):
скопировать код в буфер обмена
  1. if (!move_uploaded_file($_FILES['photo']['tmp_name'], $file_original)) exit('{"stat":"false"}'); else
  2.         {      
  3.                 list($width, $height) = getimagesize($file_original);
  4.                 if($width<1000) exit('{"stat":"false"}');
  5.                
  6.                 $new_width = 1000;
  7.                 $new_height = $width / $new_width;
  8.                 $new_height = $height / $new_height;
  9.                 $new_height = floor($new_height);
  10.                                                
  11.                 if($format == "jpg")
  12.                 {
  13.                         $image_p = imagecreatetruecolor($new_width, $new_height);
  14.                         $image = imagecreatefromjpeg($file_original);
  15.                         imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  16.                 }
  17.                 else if($format == "png")
  18.                 {
  19.                         $image_p = imagecreatetruecolor($new_width, $new_height);
  20.                         $image = imagecreatefrompng($file_original);
  21.                         imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);    
  22.                 }
  23.                                                
  24.                 $w_m_y = $new_height - 61;
  25.                 $watermark = imagecreatefrompng("../images/img_watermark.png");
  26.                 imagealphablending($watermark, true);
  27.                 imagecopy($image_p, $watermark, 662, $w_m_y, 0, 0, 338, 61);   
  28.                                                        
  29.                 if(!imagejpeg($image_p, $file_big, 80)) exit('{"stat":"false"}');
  30. }


размер картинки 4МБ и размеры 4500 на 3000 пикс.

в чём может быть проблема?
PHPinfo: https://domen-hosting[dot]net/test.php
это хостинг.

заранее спс!
2. OrmaJever - 06 Октября, 2011 - 00:11:37 - перейти к сообщению
Serpanok пишет:
Fatal error: Out of memory (allocated 16515072) (tried to allocate 4608 bytes) in /usr/home/school4dnua/data/www/s chool4.dn.ua/bl/add_photo.php on line 41

ого, забавно, первый раз такое вижу. Дословный перевод
Память исчерпана: доступно 16 515 072 байт, а вы пытаетесь использовать 4608 байт.
Как минимум страно Растерялся Может стоит обратится к хостеру? Настройки php это в любом случае их забота
3. Serpanok - 06 Октября, 2011 - 00:13:31 - перейти к сообщению
Собираюсь писать! Потому-что на моём хосте всё ок)
4. Мелкий - 06 Октября, 2011 - 00:38:01 - перейти к сообщению
Обычный OOM, у машины кончилась память. Радость Большой такой fail для хостинга.

OrmaJever пишет:
Дословный перевод

Странно переводишь Однако
Выделено 16 515 072 байта, нужно ещё 4608.
5. OrmaJever - 06 Октября, 2011 - 00:42:37 - перейти к сообщению
Мелкий пишет:
нужно ещё 4608.

а где там слово "ещё" ? А?!
6. Serpanok - 06 Октября, 2011 - 00:45:03 - перейти к сообщению
короче хост лажёвый(((
7. Мелкий - 06 Октября, 2011 - 01:19:57 - перейти к сообщению
OrmaJever пишет:
а где там слово "ещё" ?

Дословно написано "пытались выделить 4608 байта". Вот при этой попытке исключение и приплыло. А память выделяется всегда "ещё".
8. Stierus - 06 Октября, 2011 - 11:18:01 - перейти к сообщению
Цитата:
Память исчерпана: доступно 16 515 072 байт, а вы пытаетесь использовать 4608 байт.

Цитата:
(allocated 16515072) (tried to allocate 4608 bytes)


Не " доступно 16 515 072", а "выделено 16 515 072", не "а вы пытаетесь", а "попытка выделить 4608" ... то есть уже 16кк выделено, при попытке добавить еще - ошибка.

При работе с картинками большого разрешения с помощью gd-библиотеки, такое происходит постоянно, потому что она написана через жопу и жрет огромное количество памяти, используйте ImageMagick и будет вам счастье.
(Добавление)
Цитата:
Большой такой fail для хостинга
Абсолютно нормально это для хостинга Улыбка У любого хостера есть лимит по выделению памяти как на предоставляемую площадку вцелом, там и на пых в частности, если превышаете этот лимит - у любого хостера получите такую штуку. На моей памяти, работа с gd-либой - самая частая причина получения таких вот сообщений.
9. Мелкий - 06 Октября, 2011 - 11:49:54 - перейти к сообщению
Stierus пишет:
Не " доступно 16 515 072", а "выделено 16 515 072", не "а вы пытаетесь", а "попытка выделить 4608" ... то есть уже 16кк выделено, при попытке добавить еще - ошибка.

Да, пожалуй, в полвторого ночи переводчик из меня тот ещё.

Stierus пишет:
Абсолютно нормально это для хостинга

Таки выделение 16мб из memory_limit в 128мб - странно как-то. Да и по memory_limit другой fatal error.
Или речь о превышении памяти для всего сайта, соответственно уже софт мониторинга убил?
10. DeepVarvar - 06 Октября, 2011 - 11:54:02 - перейти к сообщению
Stierus пишет:
ImageMagick
кстати да, вещь офигенная. Только я никак не вкурю какие ей параметры передать для crop'а картинки, ну скажем до квадратных симметричных размеров вырезав по максимуму центральную часть из прямоугольного оригинала...
11. Stierus - 06 Октября, 2011 - 12:05:47 - перейти к сообщению
Цитата:
Только я никак не вкурю какие ей параметры передать для crop'а картинки, ну скажем до квадратных симметричных размеров вырезав по максимуму центральную часть из прямоугольного оригинала...
У него API на порядок удобнее того же GD. В последний раз я с картинками работал больше года назад, так что не помню уже толком ничего. Знаю, что я кроп с ресайзом делал в 3 строки. В инете полно гайдов на эту тему, посмотрите - найдете все.
12. Serpanok - 06 Октября, 2011 - 15:05:16 - перейти к сообщению
Спс за советы, буду учить ImageMagick ;)

 

Powered by ExBB FM 1.0 RC1