Максимальный размер содержимого переменной для вывода.

Статус
В этой теме нельзя размещать новые ответы.

Royal Flash

-=MaestrO=-
Максимальный размер содержимого переменной для вывода.

Проблемма в следующем: при выводе достаточно большого кол-ва информации, через echo не выврдится вообще ничего... Пример вывода:

$b - данные разного размера.

$s = 'начало';
$s .= $b;
$s .= 'конец';
echo $s;

Если $b превышает определнный размер - вообще ничего, кроме 'начало' не отображается... В чем проблемма?
 

Royal Flash

-=MaestrO=-
Нашел в чем причина, так как ранее был отключен вывод ошибок не видел сообщения Fatal error: Allowed memory size of 8874368 bytes exhausted (tried to allocate 3073125 bytes)
Увиличил размер в php.ini memory_limit = 18M, всеравно та же ошибка... Возможно проблема в httpd.conf?

8M по умолчанию, да и тем более 18M, которые я указал далее всетаки больше, чем 3073125 bytes...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Fatal error: Allowed memory size + поиск

-~{}~ 02.07.07 22:17:

Апач перезапускался?
 

Royal Flash

-=MaestrO=-
Mr_Max, Apche перегружался, конечно, я же и написал, что и 8M и 18M больше, чем 3073125 bytes, о чем говорится в ошибке...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума

Royal Flash

-=MaestrO=-
Mr_Max, вообщем проблемму решил, поставил memory_limit = 32M... Только вот почему так - не понял... Написано же, что нужно 3073125 bytes, а 18 метров, выходит, меньше, чем 3073125 bytes?!
PHPinfo "говорит" что памяти столько, сколько я поставил, ведь каждый раз я апач перегружал, а PHP модулем прикручен.
 

Wicked

Новичок
Royal Flash
подсказка:
Fatal error: Allowed memory size of 8874368 bytes exhausted (tried to allocate 3073125 bytes)
Допустимый размер памяти 8874368 байт закончился при попытке выделить ЕЩЕ 3073125 байт. Т.е. до этого было занято около 6-7мб.
 

Royal Flash

-=MaestrO=-
А.... :) Wicked, спасибо за перевод.
У меня запросом в MySQL выбираются сообщения форума, можно регулировать сколько на страницу. Так вот если сообщения большие, и много вывести на страницу - вылетает эта ошибка. Уже поставил после
while($row = mysql_fetch_array($result))
{
...
}

mysql_free_result($result); всеравно не помогает... Не подскажите, какими средствами можно найти что так "гасит" память?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Так вот если сообщения большие, и много вывести на страницу - вылетает эта ошибка
Даже на 1 Мб получается уж очень много текста....
Проблемма скорее всего не в выборке, а, например, в ресайзе картинок...
 

Royal Flash

-=MaestrO=-
Mr_Max, картинки при выводе не ресайзятся, и имеют весьма не значительный размер, да и их совсем мало... Ошибка выскакивает на переменной, в которй, собственно, и хранятся все посты... Получается, что посты, к примеру, занимают 3073125 байт, а весь предидущий скрипт отхватывает 5-7M... Вот я бы и хотел найти, что именно потребляет столько памяти...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Royal Flash
Простите Вы по ссылке ходили?
http://www.php.net/manual/ru/ini.core.php#ini.memory-limit

Тогда Вы не могли не заметить
[m]memory_get_usage[/m]

Растыкиваете по скрипту и опеределяете где и сколько Ваш скрипт начинает потреблять
 

Royal Flash

-=MaestrO=-
Mr_Max, спасибо, я уже нашел memory_get_usage, вот только проблемма, под Win не работает, только под Линухом. Но это не самое главное... Вот код:

while($row = mysql_fetch_array($result))
{
...
}
echo "<br>1: ".memory_get_usage();
mysql_free_result($result);
echo "<br>2: ".memory_get_usage();
Выдает:
1: 3241944
2: 3241944

Получается, что mysql_free_result память не чистит?!
 

Фанат

oncle terrible
Команда форума
нет, разумеется.
откуда у тебя три метра в скрипте взялось?
ты всю базу всех сообщений в скрипт, что ли, вытаскиваешь?
 

Royal Flash

-=MaestrO=-
*****, нет, не всю, а только 50 сообщений. Используется в админке, а не для юзеров.
 

Фанат

oncle terrible
Команда форума
ну тогда смотри дальше, подо что у тебя столько памяти жрется
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Royal Flash

нет, не всю, а только 50 сообщений.
~60 К каждое сообщение?...
что-то тут не то.

-~{}~ 02.07.07 23:40:

memory_get_usage до запроса что выводит?
 

Wicked

Новичок
mysql_free_result работает с ресурсом, память которого находится за пределами юрисдикции memory_limit.
 

Royal Flash

-=MaestrO=-
Прибил все отработавшие свое переменные перед выводом - помогло немного, снизил memory_limit до 16M, сейчас разбираюсь с остальным. Всем спасибо за консультации!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху