Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 3
1

SELECT запрос файла 128 мб, PHP скрипт отжимает эти 128 мб, можно ли сэкономить?

12.05.2016, 12:33. Показов 824. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
error_log(memory_get_peak_usage(true));
error_log(memory_get_usage(true));

Показывают, что скрипт отъедает 300 кб, но на практике это:
Allowed memory size of 134217728 bytes exhausted (tried to allocate 171544432 bytes) in Unknown on line 0

Процесс apache2 после этого тоже начинает кушать 175 мб, и не теряет свой вес.

Пробовал буфферизированные и не буфферизированные запросы, Ubuntu, PHP 5.5 + mysqlind 5.5

PHP
1
2
3
4
if ($result = $mysqli->query(sprintf("SELECT `data` FROM `files` WHERE `id` = '%d'", $id_file), MYSQLI_USE_RESULT)){
    $row = $result->fetch_assoc();
    $result->free(); // здесь происходит ошибка, что памяти не хватает
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2016, 12:33
Ответы с готовыми решениями:

Типы: почему если прибавить единицу к char, получится 128, а не -128?
Если мы прибавляем 1 к максимальному значению unsigned int - результат "0". Тогда почему если...

Массив: Заполнить массив значениями от 0 до 255, если значение меньше 128, заменить на 0, больше 128 - на 1...
Задача: Заполнить двумерный массив значениями от 0 до 255. Если значение меньше 128, заменить на 0,...

Чтение byte из файла (Программа шифрования и дешифрования AES-128)
Добрый день, реализую программу шифрования и дешифрования AES-128 Весь код уже прописан и всё...

MSI H55M-ED55 (MS-7635)Можно ли к ней прицепить ssd на память 128,256гб
Незнаю можно ли к ней прицепить вообще ssd

4
Native x86
Эксперт Hardware
5594 / 3338 / 951
Регистрация: 13.02.2013
Сообщений: 10,587
12.05.2016, 12:53 2
Похоже, авторам PHP невдомек, что объем свободной оперативной памяти не всегда больше объема данных, они все всегда пытаются начитать в память (а потом еще и продублировать пару-тройку раз), чем достали уже конкретно.

Увеличивайте значение memory_limit, ибо другого способа по-видимому нет.
0
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 3
12.05.2016, 13:40  [ТС] 3
Может поможет разбиение на строки и совместное использование небуферизированного запроса? Только сделать такой запрос который разобьет файл на много rows заданной длины мне не известно.
Но по идее, это поможет PHP извлекать данные построчно, не переполняя память.
0
Native x86
Эксперт Hardware
5594 / 3338 / 951
Регистрация: 13.02.2013
Сообщений: 10,587
12.05.2016, 13:45 4
Я бы подумал в сторону начитки блоба по частям. Выполняем несколько раз похожие SELECT-запросы, отличия между которыми только в том, что первый возвращает первые 10 мегабайт блоба, второй -- вторые 10 мегабайт и т.д.
0
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 3
12.05.2016, 16:55  [ТС] 5
Получилось сэкономить, запрашивая блоками по 10 мб, + ещё 10 мб уходит на вывод echo (вывод по блокам уменьшает скорость вывода)
0
12.05.2016, 16:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2016, 16:55
Помогаю со студенческими работами здесь

За сколько можно продать такой компьютер: AMD Sempron 3200+ , GeForce FX 5700 128 МБ?
хотела бы продать свой комп, но не знаю на сколько он потянет. подскажите пожалуйста, сколько может...

Можно ли изменить шину 64 bit в 128 bit?
Всем привет. Есть видеокарта Palit GeForce GT 430 1gb GDDR3 (GPU: GF108) с шиной 64 бита... ...

128 и -128
Я в assamblere пока новичек и поєтому еще не очень розбираюсь. У меня такой вопрос как компилятор...

AtXMega 128 A1
Доброе время суток! Уважаемые комрады, сталкивался ли кто-нибудь с ХМегой 128 ревизии A? Дело в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru