![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
W bazie danych jest coś koło 132 000 rekordów oraz ponad 140 tabel. Chcę stworzyć dump tej bazy danych w PHP. Wszystko działa poprawnie, tylko, że PHP nie usuwa danych z pamięci i gromadzi je w sobie, mimo, że juz z nich dawno nie korzystam.
Wartości sA przypisywane do zmiennych, które po skończeniu usuwam metodą unset(). Podczas pętli pod tabelach, na jej końcu wywołuje metodę memory_get_peak_usage(true), któa wskazuje mi stale rosnącą wielkość zajętej pamięci przez PHP. Dodam tylko, że w trakcie tworzenia dump-u, zapytania są dzielone na kawałki po 5000 elementów, i zapisywane do pliku, po czym znowu jest zapisywane do zmiennej 5000 elementów i zapisywane do pliku. Za każdym razem ta zmienna, w której znajdywała się treść tych zapytań też jest usuwana metodą unset(). Mimo to, ilośc zajętej pamięci stale rośnie. PHP 5.3.10 Dwie metody pobierania danych z bazy: czyste zapytania poprzez funkcję mysql_query oraz przez PDO. W obu przypadkach wstępuje ten sam problem. |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Próbowałeś zmniejszyć paczkę z 5000 do np. 500? I czy faktycznie przekracza pamięć czy limit czasu wykonania?
|
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Zmniejszałem paczki, ale wszystko zostaje w pamięci. A zmniejszenie paczek zwiększa tylko czas na wygenerowanie pełnej kopii bazy.
@nospor - użyłem mysql_free_result(), oraz dla PDO - PDO::closeCursor() ale to nic nie daje. |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Wiesz, teraz to my jedynie możemy wróżyć z fusów.... Pokaż kod, to będziemy mogli konkretnie pogadać.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Cała treść metody z klasy, w której znajduje się.
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
1) Przy drugim nie robisz closeCursor
2) Nie buforuj wyników. Ustaw parametr PDO::MYSQL_ATTR_USE_BUFFERED_QUERY na false |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Dzięki Ci wielkie @nospor. Zmiana buforowania rzeczywiście dała rezultat.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 12:26 |