Mój serwer dedykowany ma 32 GB pamięci RAM, a pamięć stale się podnosi i muszę ją codziennie restartować. To kosztuje mnie klientów i pieniądze.Jak znaleźć który skrypt PHP jest nieszczelny?
Mam trudności ze znalezieniem miejsca, w którym wyciek pamięci. Wszystko, co mogę znaleźć w Internecie, to ludzie mówią "Użyj xdebug", ale nie byłem w stanie znaleźć żadnych samouczków xdebug dotyczących znajdowania wycieków pamięci. Próbowałem drukować memory_get_usage przed i po wywołaniu funkcji, ale czy jest to właściwy sposób?
Mam wiele skryptów php działających - niektóre od odwiedzających, inne z zadań crona - i muszę znaleźć, który z nich jest wyciek pamięci i naprawić to jak najszybciej, ale nawet nie wiem, jak określić, czy dana funkcja przecieka pamięć lub nie.
Próbowałem drukować memory_get_usage przed wywołaniem funkcji i po, i idzie w górę, ale jeśli zadzwonię do tej funkcji więcej niż raz, to nie będzie już więcej. Czy ktoś może mi to wyjaśnić i powiedzieć, jak mogę łatwo i łatwo stwierdzić, czy funkcja PHP ma wyciek pamięci?
Rozważałem to ... kopiowanie całej sprawy na inny serwer i uruchamianie tylko jednego elementu na raz i zobaczenie, co to powoduje. Kosztowne i czasochłonne ... Nie ma możliwości testowania pamięci w PHP? – Guy
Nikt nie wiem. Jestem też ciekawy. Głosowałem za tobą i może oboje się dowiemy. –
Zgadzam się z @ TomášZato.Możesz użyć skryptu 'auto_append_file' i' memory_get_ * ', aby zarejestrować wszystkie swoje skrypty i uważać na te ciężkie. – metadings