Страница 1 из 1

PHP - Нехватка памяти

Добавлено: 09 авг 2004, 12:46
Oscar
Я, конечно, понимаю, что можно в php.ini "Allowed memory size" на 16Мб вместо 8-ми, как сейчас стоит, установить, но не думаю, что это выход.

Отсюда вопрос: Где в php узкие места при работе с памятью?
В нем ведь нету Garbage Collectora?..

Существуют ли какие-то методы отслеживания расхода памяти, кроме memory_get_usage() и очищения, кроме unset() ?

Или все это глупости и вся проблема только в кривых руках?
(шутка ли, запихнуть в переменную класса 130 тыс. значений из БД и работать с ними... Или это не много?)

Добавлено: 09 авг 2004, 13:24
AiK
запихнуть в переменную класса 130 тыс. значений из БД
Да вы батенька извращенец :) А резалтсет после выфетчивания закрыл?

Добавлено: 09 авг 2004, 13:36
Oscar
AiK, mysql_free_result который? Да! ))

75 тыс - график строю... кхе... За два года с 15-ти минутным тактом ))

Знаю, глупости за два года по 15 минут, но может быть до 10-ти графиков на картинке .. теоретически и больше ..
А значит, что колличество данных за 5 месяцев для 10-ти графиков равно 2 графикам за два года.
----
Перейти на часы или дни - это уже мои личные проблемы..

А вот как все же памятью можно манипулировать?
Или как минимум получить информацию о ее распределении?

Добавлено: 09 авг 2004, 13:48
AiK
Я знаю только memory_get_usage. А memory_limit можно менять где угодно, в том числе и непосредственно в скрипте.

Добавлено: 09 авг 2004, 13:54
Oscar
AiK, спасибо тебе.
Буду ждать мож кто еще чего скажет по поводу ..

Добавлено: 09 авг 2004, 16:24
Oscar
А может хоть ексепшены отлавливать можно?

В смысле, как можно предупредить то, что мой скрипт вылетает по ошибке нехватки памяти?

Бо не прет меня перед каждой из тысячи строк делать проверку, а не закончится ли случайно скоро память ....

Добавлено: 09 авг 2004, 17:41
Absurd
А неужели нельзя как-то строить график во время выфетчивания, не загоняя все это в массив?

Добавлено: 09 авг 2004, 18:53
Oscar
Absurd, нет ... не, ну то есть, может и можно, но я не знаю подходящего метода...

Вообще не загоняя никуда - ну просто не получится, ибо та же imageline() всё равно ведь приписывает данные к resource image ..
Другое дело, что ... для начала я создаю свой массив, в удобном для обработки представлении.
Потом, собственно, обрабатываю его.
Ну а уж потом рисую.

Можно, конечно, всё сразу пихать в image GD-библиотеки, а потом ... каким-то боком пытаться что-то с этим сделать :D

Простой пример. До тех пор, пока все данные не забраны из БД я не знаю максимума, чтобы задать коеффициент скалирования, необходимый для отображения графиков на рисунке..

Добавлено: 09 авг 2004, 19:05
AiK
Oscar, налицо атипичное использование БД. Она тебе вообще не мешает, а? :)
Удобные массивы - это таблицы. Всё что нужно, можно сосчитать средствами SQL.
В частности твой максимум. И среднее. И чёрта в ступе :)

Добавлено: 09 авг 2004, 19:23
Oscar
AiK, дурак, виноват, исправлюсь :-)

но через месяц, а сейчас поехал-ка я домой :-)