Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нехватка памяти, Fatal error: Allowed memory size of 
:(
    Опции темы
comtat
Дата 2.3.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



После перехода с php 5.2.0 на 5.2.1
стала вываливаться следущая ошибка
Цитата

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 11264 bytes) in D:\wwwroot\cm4\sysmod\settings\settings_service.php on line 33


Подскажите, как ее побороть ....



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Всемогущий
Дата 2.3.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



Цитата

The code is necessary!



comtat, приведи здесь участок кода который порождает ошибку.


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
comtat
Дата 2.3.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Код

    function ResizeImage($tmpName, $maxWidth, $maxHeight, $type){        
        list($width,$height) = getimagesize($tmpName);
        if (($width >= $maxWidth) or ($height >= $maxHeight)) {
            if ($width > $height){
                $newwidth = $maxWidth;
                $newheight = $height*($newwidth/$width);
            }
            else {
                $newheight = $maxHeight;
                //$newwidth = ($maxHeight*3)/4;
                $newwidth = $width*($newheight/$height);
            }
        }
        $tmp = imagecreatetruecolor($newwidth,$newheight);
        
        switch ($type){
            case "gif":
                $src = imagecreatefromgif($tmpName);
                break;
            case "jpg":
                $src = imagecreatefromjpeg($tmpName);
                break;
            case "png":
                $src = imagecreatefrompng($tmpName);
                break;
        }
        imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
        
        switch ($type){
            case "gif":
                imagegif($tmp, $tmpName);
                break;
            case "jpg":
                imagejpeg($tmp, $tmpName);
                break;
            case "png":
                imagepng($tmp, $tmpName);
                break;
        }
        return $tmpName;
    }


Валится вот на этом 
Код
$src = imagecreatefromjpeg($tmpName);

Размер фотки, которую хочу за ресайзить 2Мб

Это сообщение отредактировал(а) comtat - 2.3.2007, 14:24


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
mishaSL
Дата 2.3.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



comtat, посмотри в php.ini директиву memory_limit и установи для нее большее значение.

Добавлено @ 15:17 
к примеру:
Код

memory_limit = 8M



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
comtat
Дата 2.3.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



 smile там и так 16Мб куда больше- то


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
mishaSL
Дата 2.3.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



comtat, посмотри еще эту директиву upload_max_filesize.

Только тогда былабы при upload-е ошибка... Странно...

Добавлено @ 16:11 
Попробуй поставь:
Код

memory_limit = 32M


Если будет работать тогда со скриптом надо разбираться.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
comtat
Дата 2.3.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



upload_max_filesize - Это максимальный размер закачиваемого файла (8 Мб), я закачиваю 2Мб

Максимальный размер, при котором не валится 625 Кб


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
mishaSL
Дата 2.3.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(comtat @  2.3.2007,  16:56 Найти цитируемый пост)
Максимальный размер, при котором не валится 625 Кб 


т.е. memory_limit = 625Кб работает? 



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
BuShaRt
Дата 2.3.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



хм, а кто сказал, что М = МБ? м вообшето в данном случае байт имееться в виду)
PM MAIL   Вверх
mishaSL
Дата 2.3.2007, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(BuShaRt @  2.3.2007,  17:34 Найти цитируемый пост)
хм, а кто сказал, что М = МБ? м вообшето в данном случае байт имееться в виду) 

M - равно 1 Мегабайт, другие сокращения можно посмотреть здесь http://ru2.php.net/manual/ru/faq.using.php....shorthandbytes

Кстати МБ сокращения вообще нет.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
szz
Дата 2.3.2007, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



У тебя стоит лимит в 8 мега, а валится при двух???
Хрень какая...
   Мож при содании gd ресурса, рнр держит ресурс в распакованнм виде, т.е. типа bmp?

В общем подебагь с помощью memory_get_usage() 

Аааааа, посмотрел сейчас твою ошибку...

Псмотри внимательно:

Цитата

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 11264 bytes) in D:\wwwroot\cm4\sysmod\settings\settings_service.php on line 33


На строке 33 (то есть креатефромблабла) у тебя аллоцируется всего лишь 11264 bytes!
 А остальные 16777216 твой скрипт пожрал перед этим.
Ты много картиновых ресурсов ткрываешь небось и не закрываешь их, а?
Почему в конце функции перед ретерном нету
imagedestroy($src);
imagedestroy($tmp);
?



--------------------
PM   Вверх
comtat
Дата 3.3.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Цитата(mishaSL @  2.3.2007,  17:04 Найти цитируемый пост)
memory_limit = 625Кб работает? 

Нет, memory_limit=16МБ
размер закачиваемого файла 625Кб
Цитата(szz @  2.3.2007,  22:53 Найти цитируемый пост)
Мож при содании gd ресурса, рнр держит ресурс в распакованнм виде, т.е. типа bmp?

Ага, оригинальное фото и bmp => 625*2 = 1250 Кб, ну ни как не 16 Мб

Попробую юзануть imagedestroy, возможно ты прав ...



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
szz
Дата 3.3.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Цитата

Ага, оригинальное фото и bmp => 625*2 = 1250 Кб, ну ни как не 16 Мб

     Так бмп занимает гораздо больше объема (в десятки раз), чем твой сжатый жпег или что ты там закачиваешь.

  Ты разве не понял, возможно дело не в этой картинке - скрипт вылетает по лимиту, потому что почти все 16М твоих УЖЕ вероятно выжраны перед этим! А она является, так сказать последней каплей, переполняющей чашу.
  Кроме дестрой посмотри, есть ли что в скрипте перед этим куском, что возможно жрет много памяти.
Попробуй подебагить, в разных местах скрипта вставляя 
Код
echo "at line ".__LINE__.": used ".memory_get_usage().' so far ('.
     ((16*1024*1024)-memory_get_usage()).' left of allowed '.(16*1024*1024).').<br>'; 



--------------------
PM   Вверх
Powerhead
Дата 3.3.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 7.11.2006

Репутация: 1
Всего: 2



Ну дай ему 32 метра, что тебе жалко чтоли? ))
ini_set('memory_limit', '32M');
PM MAIL WWW ICQ   Вверх
Всемогущий
Дата 3.3.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



попробовал у себя : 0 внимания на ini_set('memory_limit', '32M');


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.