С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
1

Allowed memory size of 67108864 bytes exhausted

17.07.2017, 12:35. Показов 1926. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
PHP
1
2
3
4
move_uploaded_file($_FILES['foto']['tmp_name'][$a], $uploadfile);
    //------------------------------------------
    list($width, $height) = getimagesize($uploadfile);
    $newfile = imagecreatefromjpeg($uploadfile); //51 строка
Я загружаю одну фотку размером 4,58МБ и мне выводит ошибку
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 31864 bytes) in register-hotel.php on line 51
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
17.07.2017, 12:35
Ответы с готовыми решениями:

Ошибка Allowed memory size
function films($cat){ global $dbh; $filmsquery = "SELECT * FROM films INNER JOIN kategory...

Allowed memory size при ajax + php
Требуется добавлять свыше 5000+ товаров в каталог, для этой цели использую ajax. <script> ...

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1572864 bytes)
Доброго времени суток уважаемые участники форума. Не так давно взялся за тех. поддержку сайта...

Allowed memory size при AJAX запросе
Требуется добавлять свыше 5000+ товаров в каталог, для этой цели использую ajax, т.к. php не...

11
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
17.07.2017, 12:39 2
Или фотка не 4мб, или где-то течет память
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
17.07.2017, 12:43  [ТС] 3
Jewbacabra, вот полный код обработчика:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
$url_translit = array(
            'а' => 'a', 'б' => 'b', 'в' => 'v',
            'г' => 'g', 'д' => 'd', 'е' => 'e',
            'ё' => 'yo', 'ж' => 'zh', 'з' => 'z',
            'и' => 'i', 'й' => 'j', 'к' => 'k',
            'л' => 'l', 'м' => 'm', 'н' => 'n',
            'о' => 'o', 'п' => 'p', 'р' => 'r',
            'с' => 's', 'т' => 't', 'у' => 'u',
            'ф' => 'f', 'х' => 'x', 'ц' => 'c',
            'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shh',
            'ь' => '\'', 'ы' => 'y', 'ъ' => '\'\'',
            'э' => 'e\'', 'ю' => 'yu', 'я' => 'ya',
            'А' => 'A', 'Б' => 'B', 'В' => 'V',
            'Г' => 'G', 'Д' => 'D', 'Е' => 'E',
            'Ё' => 'Yo', 'Ж' => 'Zh', 'З' => 'Z',
            'И' => 'I', 'Й' => 'J', 'К' => 'K',
            'Л' => 'L', 'М' => 'M', 'Н' => 'N',
            'О' => 'O', 'П' => 'P', 'Р' => 'R',
            'С' => 'S', 'Т' => 'T', 'У' => 'U',
            'Ф' => 'F', 'Х' => 'X', 'Ц' => 'C',
            'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Shh',
            'Ь' => '\'', 'Ы' => 'Y\'', 'Ъ' => '\'\'',
            'Э' => 'E\'', 'Ю' => 'Yu', 'Я' => 'Ya',
            ' ' => '-'
        );
    $lat_hotelname = strtr($name, $url_translit);   
    $uploaddir = '.hotel/'.$lat_hotelname.'/';
    if (!file_exists($uploaddir)){
        mkdir($uploaddir, 0777);
    }
    for($a=0; $a<7; $a++){
        if($_FILES['foto']['error'][$a] !== 4){
            $lat_filename = strtr($_FILES['foto']['name'][$a], $url_translit);
            $uploadfile = $uploaddir.$lat_filename;//orgfile
            var_dump($_FILES['foto']['name'][$a]);
            move_uploaded_file($_FILES['foto']['tmp_name'][$a], $uploadfile);
            //------------------------------------------
            list($width, $height) = getimagesize($uploadfile);
            $newfile = imagecreatefromjpeg($uploadfile);
            $newwidth = $width * 0.5;
            $newheight = $height * 0.5;
            $thumb = $uploaddir.'ztk'.$lat_filename;//orgfile
            $truecolor = imagecreatetruecolor($newwidth, $newheight);
            imagecopyresampled($truecolor,$newfile,0,0,0,0,$newwidth,$newheight,$width,$height);
            imagejpeg($truecolor,$thumb,100);
            unlink($uploadfile);
        }
    }
может действительно где-то накосячил, но найти не могу

Добавлено через 1 минуту
изначальные файлы в директорию записываются.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
17.07.2017, 12:49 4
Тут я вижу 8 итераций, т.е уже не 4, а 32 мб используется, из 64. Еще на обработку каждой память уходит. imagedestroyем можно попробовать ненужные ресурсы удалять
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
17.07.2017, 13:03  [ТС] 5
Jewbacabra, я тут мануал перечитал, и переделал под foreach
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
foreach ($_FILES["foto"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $lat_filename = strtr($_FILES['foto']['name'][$key], $url_translit);
            $uploadfile = $uploaddir.$lat_filename;//orgfile
            var_dump($_FILES['foto']['size'][$key]);
            move_uploaded_file($_FILES['foto']['tmp_name'][$key], $uploadfile);
            //------------------------------------------
            list($width, $height) = getimagesize($uploadfile);
            $newfile = imagecreatefromjpeg($uploadfile);
            $newwidth = $width * 0.5;
            $newheight = $height * 0.5;
            $thumb = $uploaddir.'ztk'.$lat_filename;//orgfile
            $truecolor = imagecreatetruecolor($newwidth, $newheight);
            imagecopyresampled($truecolor,$newfile,0,0,0,0,$newwidth,$newheight,$width,$height);
            imagejpeg($truecolor,$thumb,100);
            unlink($uploadfile);
        }
    }
по идее итераций должно быть столько, сколько добавляется файлов.
var_dump($_FILES['foto']['size'][$key]); мне выводится только один раз, значит и итерация одна.
var_dump мне вывел int(4811088) - это оригинальный размер файла но все-равно ошибка выходит.
попробовал загрузить 4 фотки весом int(521933) int(187418) int(221729) int(329465) - Все нормально
P.S а про imagedestroy сейчас почитаю

Добавлено через 3 минуты
Jewbacabra,
PHP
1
2
3
4
imagecopyresampled($truecolor,$newfile,0,0,0,0,$newwidth,$newheight,$width,$height);
imagejpeg($truecolor,$thumb,100);
imagedestroy($uploadfile);
unlink($uploadfile);
imagedestroy не помог
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
17.07.2017, 13:12 6
Shoshona, сделай в начале скрипта
PHP
1
var_dump($_FILES, memory_get_usage());
И memory_get_usage после каждой операции
Ps про imagedestroy плохо читал, попробуй еще раз
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
17.07.2017, 13:25  [ТС] 7
Jewbacabra,
var_dump($_FILES, memory_get_usage()); в начале кода -
array(1) { ["foto"]=> array(5) {
["name"]=> array(1) {
[0]=> string(30) "model-vzglyad-lokony-kudri.jpg" }
["type"]=> array(1) {
[0]=> string(10) "image/jpeg" }
["tmp_name"]=> array(1) {
[0]=> string(36) "/home/zatoka01/.system/tmp/phpRRI9Xb" }
["error"]=> array(1) {
[0]=> int(0) }
["size"]=> array(1) {
[0]=> int(4811088) } } }
int(21025528)
var_dump(memory_get_usage()); после каждой операции (правда делал 4 var_dump а вывело 1)
int(21038608)
Добавлено через 1 минуту
Цитата Сообщение от Jewbacabra Посмотреть сообщение
ро imagedestroy плохо читал
согласен, переделал на
PHP
1
imagedestroy($truecolor);
тот же результат
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
17.07.2017, 13:44 8
Shoshona, а после move uploaded file сколько будет использовано памяти?
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
17.07.2017, 13:53  [ТС] 9
Jewbacabra,
PHP
1
2
move_uploaded_file($_FILES['foto']['tmp_name'][$key], $uploadfile);
            var_dump(memory_get_usage());
int(21037848)
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
17.07.2017, 14:47 10
Shoshona, получается что getimagesize использует больше 40мб, но это выглядит каа-то неправдоподобно. Еще слишком много памяти в начале скиипта занято, в 4 раза больше чем загружаемый файл.
Можно попробовать увеличивать memory_limit
0
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
17.07.2017, 15:00  [ТС] 11
Jewbacabra, хостинг платный и к php.ini нету доступа. В настройках хостинка пользователя есть только лимит POST массива я его поднял до 200МБ но это не помогло
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
17.07.2017, 22:43 12
Shoshona, похоже проблема с функцией imagecreatefromjpeg, можно попробовать использовать вместо gd imagick или консольные утилиты, если хостинг позволяет, либо пробовать увеличить память
PHP
1
ini_set('memory_limit', '512M');
0
17.07.2017, 22:43
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
17.07.2017, 22:43
Помогаю со студенческими работами здесь

Ошибка Fatal error: Allowed memory size
Привет, залил очередную новость на dle, теперь на главную не заходит.. Пишет Fatal error: Allowed...

Warning: POST Content-Length of 13305751 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
Вот такая ошибка красуется на странице, но при этом в php.ini upload_max_filesize = 20M,...

Allowed memory size of 134217728 bytes exhausted (tried to allocate 46704001 bytes)
Вот такая проблема возникает при загрузке изображения, проблему устранил, но таким путём, которые...

Not enough memory (67108864 bytes needed)![DefaultErrorInsufficientMemoryCallback]
Fatal Error Not enough memory (67108864 bytes needed)!. Что это значит? Вылетела во время...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Блоги программистов
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(шес­­­­­­тиби­тный асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
Angular vs React vs Vue.js
BasicMan 03.01.2025
О, друзья-разработчики и просто любопытные читатели! Сегодня мы отправимся в увлекательное путешествие по миру фронтенд-разработки, и первой остановкой станет Angular – этакий строгий немецкий. . .
Сравнение микросервисов и монолита
cpp_developer 03.01.2025
Достоинства и недостатки микросервисной архитектуры Микросервисная архитектура представляет собой современный подход к построению программных систем, где приложение разбивается на набор небольших. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru