Не хватает памяти для выполнения скрипта до конца.

AHTIXPICT

Новичок
Не хватает памяти для выполнения скрипта до конца.

Ситуация такая:
1. Скрипт шерстит директорию,
2. Получает файл,
3. Пишет его в переменную.
4. Убирает из переменной лишние символы типа ", . ()" и т.д.
5. Записывает получившуюся строку в базу
6. Если полученый файл - директория - тогда рекурсия - и пункт 1-5, если не директория тогда без рекурсии 1-5

После каждой записи в базу - flush(). Но в определенный момент получаем:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 35 bytes) in /mnt/admin_test/7.php on line 58

flush() - я знаю чистит буфер вывода а не память.
Хотя вообще то не понятно почему памяти не хватает, ведь переменная то в цикле не наращивается а просто заново присваивается значение - содержимое файла.
Может кто подскажет.
Вот сам ткст скрипта:
http://www.loe.lg.ua/data/atachments/7.txt
 

gray07

Новичок
str_replace умеет работать и с масивом того, что надо заменять. Попробуй, может это из-за ее частых вызовов, может временные переменные какие-то не освобождаются.
 

tony2001

TeaM PHPClub
>$contents = fread($fd, filesize ($path));
убери и читай _небольшими кусками_ вместо чтения всего файла сразу.
 

fisher

накатила суть
http://ru3.php.net/memory_get_usage если версия пхп позволяет
и аккуратно в цикле мониторить. рекурсия, там, однако - с ней аккрутно надо. перед вызовом рекурсивным по максимуму почистить.
 

AHTIXPICT

Новичок
Автор оригинала: tony2001
>$contents = fread($fd, filesize ($path));
убери и читай _небольшими кусками_ вместо чтения всего файла сразу.
Да файлы небольшие то.
И валиться почему то на очень маленьком файле.
До ошибки читает и большие файлы.

-~{}~ 28.07.04 18:52:

Автор оригинала: fisher
http://ru3.php.net/memory_get_usage если версия пхп позволяет
и аккуратно в цикле мониторить. рекурсия, там, однако - с ней аккрутно надо. перед вызовом рекурсивным по максимуму почистить.
В момент обвала скрипта
echo memory_get_usage() дает совсем чуть чуть:

127800
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 35 bytes) in /mnt/admin_test/7.php on line 58


Причем это значение более менее постоянное в цикле держится.
 

Werewolfy

Guest
Насколько я помню - 35 byte ему как раз и не хватает. Остальное уже задействовано. Или я не прав?
 

AHTIXPICT

Новичок
Автор оригинала: Werewolfy
Насколько я помню - 35 byte ему как раз и не хватает. Остальное уже задействовано. Или я не прав?
Ты мой предыдущий пост читал.
В момент завершения скрипта с ошибкой занято около 128кб
памяти, а выделено 8мб.
А 35 - это не то что не хватает - а ошибка в размещении 35 байт , если перевести дословно
 
Сверху