Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> php://input i problem z pamięcią, czy da się ją wyczyścić?
Sephirus
post
Post #1





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam,

Od razu przechodzę do rzeczy.

Mam skrypt, na który przesyłane są spore rozmiarami dane w formie RAW POST. Skrypt odbiera te dane poprzez pointer do php://input, zczytuje je i procesuje. Wszystko fajnie działa. Okazuje się jednak, że są spore problemy z pamięcią. Dokładnie rzecz ujmując:

Po przesłaniu na skrypt 1MB danych, od razu po jego załadowaniu (zaraz po <?php) zużycie pamięci sięga ~2MB (~1MB wymaga samo PHP), dodatkowo PIK pamięci wynosi ~4MB. Dane nie są jeszcze wczytane przez skrypt więc po ich zaczytaniu pamięć wzrasta do jakichś ~3MB (1MB więcej co jest logiczne).

Problemem jest to, że właśnie już na wstępie PHP zajmuje sobie pamięć na to co ma w php://input a nawet coś konkretnego z tym robi i to (wg moich wyliczeń) robi coś z tym 3 razy (PIK:4MB - 1MB na PHP co daje 3MB czyli potrójny rozmiar przesłanych danych). Liczby przedstawione przeze mnie są przykładowe ale przesyłanie danych o innych wielkościach skutkuje dokładnie tym samym (zawsze PHP zajmują pamięć na to a PIK wynosi 1MB + 3 x rozmiar danych).

Sprawdziłem wszystkie możliwe zmienne, opcja ALWAYS_POPULATE_RAW_POST*** jest wyłączona. Mimo to nic nie mogę zrobić z tą pamięcią.

Problem jest dość istotny bo przy założeniu, że dam ograniczenie pamięci na powiedzmy 64MB to już przesłanie 25MB wykrzacza skrypt (PIK wynosi ponad 75MB pamięci).

Szukam jednego z dwóch rozwiązań:
1. Czy da się coś zrobić by skrypt PHP nie zajmował tej pamięci już na samym starcie?
2. Jeśli nie - to czy można ją jakoś zwolnić (do samego końca skryptu jest ona zajęta).

Próbowałem kombinować z GC itp ale nic to nie daje.

Ma ktoś jakiś pomysł? Spotkał się z czymś podobnym? Każda wskazówka może być pomocna - dzięki!


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 07:25