За последние 24 часа нас посетили 49875 программистов и 1690 роботов. Сейчас ищут 1152 программиста ...

Ошибка обработки

Тема в разделе "PHP для новичков", создана пользователем wir_wolf, 7 апр 2010.

  1. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 9216 bytes) in /home/vol3/byethost31.com/wir-wolf.org.ua/htdocs/admin/req.php on line 28

    PHP:
    1.  
    2. <?php
    3. class imeage_edit {
    4.  
    5. function editsize($filename2){
    6. // The file
    7. //$filename = 'test.jpg';
    8. $filename = "temp_folder/" . $filename2;
    9. // Set a maximum height and width
    10. $width = 200;
    11. $height = 200;
    12.  
    13. // Content type
    14. //header('Content-type: image/jpeg');
    15.  
    16. // Get new dimensions
    17. list($width_orig, $height_orig) = getimagesize($filename);
    18.  
    19. $ratio_orig = $width_orig/$height_orig;
    20.  
    21. if ($width/$height > $ratio_orig) {
    22.    $width = $height*$ratio_orig;
    23. } else {
    24.    $height = $width/$ratio_orig;
    25. }
    26.  
    27. // Resample
    28. $image_p = imagecreatetruecolor($width, $height);
    29. $image = imagecreatefromjpeg($filename);
    30. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
    31.  
    32. // Output
    33. //imagejpeg($image_p, null, 100);
    34.  
    35. return $image_p;
    36. }
    37.  
    38.  
    39. function imageresize($outfile,$infile2,$quality) {
    40. $infile = "temp_folder/" . $infile2;
    41. $size = getimagesize($infile);
    42. $neww = $size[0];
    43. $newh = $size[1];
    44.     $im=imagecreatefromjpeg($infile);
    45.     $k1=$neww/imagesx($im);
    46.     $k2=$newh/imagesy($im);
    47.     $k=$k1>$k2?$k2:$k1;
    48.  
    49.     $w=intval(imagesx($im)*$k);
    50.     $h=intval(imagesy($im)*$k);
    51.  
    52.     $im1=imagecreatetruecolor($w,$h);
    53.     imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));
    54.  
    55.     imagejpeg($im1,$outfile,$quality);
    56.     imagedestroy($im);
    57.     imagedestroy($im1);
    58.     }
    59. }
    60. ?>
    61.  
    Не могу понять в чем проблема...
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    какой размер у оригинальных картинок, мил человек?
     
  3. thunderpick

    thunderpick Активный пользователь

    С нами с:
    10 апр 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Москва
    у меня такое было когда пытался вывести все строки из 40-метрового файла...решил по 10к строк выводить...но здесь картинки...короче говоря...они слишком большие...
     
  4. Петр

    Петр Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    Господа!
    Ну как же стыкуется
    с этим
    PHP вываливает ошибку, говоря, что и где произошло не так.
     
  5. thunderpick

    thunderpick Активный пользователь

    С нами с:
    10 апр 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Москва
    или попробуй дать пхп больше памяти..(как вариант, хотя нах не надо...)
    не всем английский под силу =)
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    wir_wolf
    сказано:
    скрипт пытался отожрать памяти (tried to allocate 9216 bytes)
    по такому то пути /home/vol3/byethost31.com/b31_3234203/wir-wolf.org.ua/htdocs/admin/req.php
    и пытался он это сделать в строке 28 - on line 28

    но ему не дали. ибо Allowed memory size of 25165824 bytes exhausted - разрешенный размер памяти "был, да весь вышел".

    а так как ему надо, а не дают - он и прерывается.

    25165824 bytes это 25 165 824 байт. Т.е. 25 миллионов. Т.е. почти 25 мегабайт. ( а фактически - ровненько 24 мегабайта ).

    Лимит памяти на скрипт можно менять.
     
  7. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    Я понимаю что оно пишет,просто не понимаю в чем причина, картинки не больше метра метр....
    [​IMG]

    Хм.. а может быть из-за длинного названия файла?
    igordata, обработка идет в цыкле, каждое фото обрабатывается отдельно.
     
  8. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    хы, это он не больше метра с учетом jpg-компрессии.
    а в памяти он будет занимать Width * Height * 4 байта. после декомпрессии.
     
  9. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    engager, так как же быть с такими фото?
     
  10. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    ну как уже писали, максимальный размер выделяемой скприту памяти для выполнения настраивается в каком-то конфиге.
    вообще, если в гугле набрать он миллион записей выдаст.
     
  11. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    да
    , на хостинге?

    А если рассматривать тот вариант что у человека бесплатный хостинг?
     
  12. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    ну тогда только если переводить картинрку в индексированный цвет и сохранять. тогда, если сохранить в 256ти цветной палитре, можно снизить потребляемую память в 4 раза.
    и кстати, про хостинг не было ни слова.
    точно так же, как и то, откуда там берутся файлы картинок.
     
  13. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    Что я из этого потеряю, и какой нибудь мануальчик как это сделать?
     
  14. thunderpick

    thunderpick Активный пользователь

    С нами с:
    10 апр 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Москва
    кури конфиги, htaccess php_value имя_дирекстивы значение или в скрипте ini_set. пользуйся =)
     
  15. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    thunderpick, на бесплатных хостингах запрещено менять настройки PHP через .htaccess или ini_set
     
  16. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    на хостинге?

    А если рассматривать тот вариант что у человека бесплатный хостинг?
     
  17. thunderpick

    thunderpick Активный пользователь

    С нами с:
    10 апр 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Москва
    php он и в африке php
     
  18. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    И что вы хотели этим сказать:?
     
  19. thunderpick

    thunderpick Активный пользователь

    С нами с:
    10 апр 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Москва
    судя по посту akrinel переходи на платный...5 баксов в месяц...
     
  20. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    Я передумал другой способ, у меня Uploader написан на AS3.
    Можно через flashvars передать флешке максимальный размер, и при попытке загрузить картинку на сервер, флешка будет подсчитывать размер изображения, и если он больше чем максимальный размер выделяемый на скрипт, юзеру будет писать, типу "Эй чувак, твоя фотка слишком велика".
    Проблема в другом, как этот максимально допустимый размер получить...
    в phpinfo() я нашел этот параметр, а вот как его получить в виде пременной в скрипте, ума не приложу..
     
  21. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    http://php.net/manual/en/function.ini-get.html
    Если доступно phpinfo по идее должна быть и она.
     
  22. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    Ну так что, как мне это реализовать? в гугле был, не нашел ничего полезного..

    а по поводу
    я передумал так как галерея для фото, и когда грузишь туда фотки сделаны камерой 8 megepixel + все фото превышают размер.