![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
nie do końca wiem jak w PHP narazić się na wyciek pamięci, ale chyba właśnie padłem jego ofiarą. Mam skrypt konsolowy, który czyta po kolei strony z zewnętrznego serwera i zawsze po około 40-50-ciu tysiącach iteracji otrzymuję błąd w stylu: Cytat PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 421888 bytes) in ... on line 36 A to mój kod (uprościłem dla przykładu):
Linia 36. to: Czy po kroku iteracji zawartość $html dalej jest trzymana w pamięci? Jakoś nie chce mi się w to wierzyć. Ten post edytował SmokAnalog 4.02.2018, 13:09:52 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
https://github.com/php/php-src/blob/master/...ard/file.c#L522 tutaj jest kod za to odpowiedzialny (IMG:style_emoticons/default/biggrin.gif)
Jest zarządzie pamięcią robi malloc i gdzieś tam pewnie jest ta pamieć zwalniana ale niekoniecznie od razu. No system kolejkowy, żeby wrzucić te operacje na kolejkę i przetworzyć a nie robić to w pętli tak jak masz teraz |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 07:01 |