ongaqjin
21.10.2008, 08:50:07
Aplikacja, nad ktora pracuje m.in. zapisuje logi z monitoringu stron do jednej tabeli. Monitoring jest wykonywany co minute, wiec tych logow jest bardzo duzo (w tej chwili ponad 150000 ale kazdego dnia jest ich o ponad 10000 wiecej). Chcialbym wypisac wszystkie logi z bazy do np. pliku tekstowego, ale nie moge zrobic tego "bezposrednio" (select * from logs) bo rekordow jest zbyt wiele i albo konczy mi sie pamiec do alokacji albo czas na wykonanie skryptu - tak czy inaczej skrypt sie nie wykonuje. Probowalem dzielic rekordy na grupy i robic to w petli, ale bez efektu. Probowalem nawet robic petle przekierowujaca (z pliku widoku w pewnych warunkach automatycznie przekierowuje do funkcji kontrolera i spowrotem), ale to dziala tylko pod IE, pozostale przegladarki, na ktorych testowalem (Opera, Chrome) maja zabezpieczenia przed petlami przekierowujacymi. Ma ktos jakis pomysl, jak to wykonac? Z gory dziekuje za pomoc.
zegarek84
21.10.2008, 08:59:04
jak to grupowałeś

czy poprzez dodanie w zapytaniu
LIMIT 
bo jeśli nie to skorzystaj z tego i w pętli - po prostu przeleć wszystko za koleją - jeśli chcesz to pogrupuj - przeleć to w petli zmieniając parametry LIMIT i odrazu w tej pętli zapisuj...
ongaqjin
21.10.2008, 09:08:40
probowalem to wlasnie robic limitem i niestety nie robi to zadnej roznicy. pobieralem w petli 1000 rekordow przy pomocy limit i po jednym zapisywalem od razu do pliku tekstowego (zeby nie trzymac wszystkich rekordow w pamieci), ale nie dziala. teoretycznie jesli robilbym to w petli, to zmienne ktorych uzywam do zapisania kwerendy, tablicy asocjacyjnej etc. powinny byc uzywane ponownie (w tym samy miejscu pamieci, czyli nowa pamiec nie powinna byc alokowana), prawda? bo wyglada to tak, jakby za kazdym przejsciem petli skrypt tworzyl sobie nowe zmienne i przez to pamiec do alokacji szybko sie konczy.
golaod
21.10.2008, 09:20:51
To może zwolnij pamięć po zrobieniu selecta i zapisie do pliku?
Btw. skoro masz problem z czasem to może pomoże np. set_time_limit(0);?
ongaqjin
21.10.2008, 09:22:26
jesli chodzi o zwolnienie pamieci, masz na mysli unset czy cos innego?
golaod
21.10.2008, 10:02:17
mysql_free_result i unset lub chociaż wyczyszczenie zmiennej przez $zmienna = '',array(), lub null
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.