Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Wypisywanie duzych ilosci rekordow
Forum PHP.pl > Forum > Przedszkole
ongaqjin
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
jak to grupowałeśquestionmark.gif czy poprzez dodanie w zapytaniu LIMIT questionmark.gif 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
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
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
jesli chodzi o zwolnienie pamieci, masz na mysli unset czy cos innego?
golaod
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.