parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

перемещение каталога с содержимым

527 06.05.2005 15:29 / 06.05.2005 15:33

Столкнулся с такой проблеммой...
нежданно не гаданно моя админка упала с ошибкой что память кончилась :(
GC Warning: Out of Memory!  Returning NIL!
с помощью ^musage нашел узкое место

есть метод:
##### @move_folder[] ###################################
# метод перемещает содержимое каталога $from в каталог $to
# рекурсивно обрабатывает все вложенные каталоги
@move_folder[from;to][from;to;subfrom;subto;ls]
^musage[внутри move_folder в начале]
^if(-d "$from"){
	$ls[^file:list[$from]]
	^ls.menu{
		^if(-d "${from}${ls.name}"){
			$subfrom[${from}${ls.name}/]
			$subto[${to}${ls.name}/]
#			^memory:compact[]
			^move_folder[$subfrom;$subto]
		}
		^if(-f "${from}${ls.name}"){
			^file:move[${from}${ls.name};${to}${ls.name}]
		}
	}
}
# end of @move_folder[]
Сначала у меня переменная $ls не была локальной, и памяти не хватало(64 MB на процес), этот касяк исправил теперь ошибки пока нет. Но! это не решает проблему в будущем, ведь если страниц увеличится? крышка!
метод отжирает много памяти, чем больше вложенных каталогов и файлов тем больше
В одном моём сайте страниц(=каталогов) очень много около 1000 страниц. Памяти перестало хватать!

Еще пробовал воткнуть ^memory:compact[] вылетает ошибка: malformed header from script. Bad header=Duplicate large block dealloca: /site.ru/cgi-bin/parser3.cgi

вот например отрывок из лога musage.log
[2005-05-06 14:16:41] xxx.xxx.xxx.xxx: внутри move_folder в начале 5456 996 11392.4 11392.4 /page_from_site.html 
[2005-05-06 14:16:41] xxx.xxx.xxx.xxx: внутри move_folder в начале 5464 988 11401.3 11401.3 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5692 760 11641.8 11641.8 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5708 744 11653.4 11653.4 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5728 724 11674.3 11674.3 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5776 676 11727.2 11727.2 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5808 644 11756.4 11756.4 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5896 556 11854.5 11854.5 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5904 548 11860.9 11860.9 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5928 524 11877.8 11877.8 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5944 508 11890.2 11890.2 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5952 500 11902.4 11902.4 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5960 492 11914.9 11914.9 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5972 480 11928.4 11928.4 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 5984 468 11934.8 11934.8 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 6000 452 11947.2 11947.2 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 6008 444 11959.5 11959.5 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 6016 436 11971.7 11971.7 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 6040 412 11989.6 11989.6 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 6048 404 12000.9 12000.9 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 6704 1900 12675.2 12675.2 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 6720 1884 12693.6 12693.6 /page_from_site.html 
[2005-05-06 14:16:42] xxx.xxx.xxx.xxx: внутри move_folder в начале 6724 1880 12699.8 12699.8 /page_from_site.html 
...................................
тут еще около 1000 строчек для каждого подкаталога своя
...................................
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 44460 7328 50584.6 50584.6 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 44520 7268 50645.7 50645.7 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 44524 7264 50652.1 50652.1 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 44552 7236 50671.5 50671.5 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 44552 7236 50677.9 50677.9 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 44592 7196 50716.7 50716.7 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 44748 7040 50867 50867 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 44768 7020 50890.7 50890.7 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 44840 6948 50968.4 50968.4 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 44852 6936 50979.2 50979.2 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 45036 6752 51171.4 51171.4 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 45220 6568 51365.4 51365.4 /page_from_site.html 
[2005-05-06 14:16:52] xxx.xxx.xxx.xxx: внутри move_folder в начале 45264 6524 51399.2 51399.2 /page_from_site.html 
У меня возникает вопрос что делать? как этого пожирания избежать?
Подкиньте правильных мыслей!?

P.S. пока сам дудумал лишь проверять в самом начале $from eq $to если одинаковые то ничего не делать.