Skąd się bierze różnica w użyciu pamięci przez PHP?

0

W firmie jestem odpowiedzialny za utrzymanie, poprawę i rozbudowę najgorzej napisanej aplikacji w PHP na świecie, która na moje nieszczęście jest już trochę rozbudowana i operuje na dosyć istotnych danych, których jest dużo.
O "jakości" aplikacji może świadczyć fakt, że pierwszym moim zadaniem była optymalizacja tego w taki sposób, żeby na localhoście wykonywało się tak szybko jak na zdalnym serwerze (nazwa.pl), gdzie na localhoście trwało to ok. 90 sekund [!], na nazwie - ok 2 sekundy. Zapytań na jedno odświeżenie było wtedy ok 150.
Udało mi się to przyśpieszyć kosztem pamięci, ogólnie dla mnie to to powinno być napisane od zera, ale nikt nie będzie czekał 3 miesiące (co najmniej) na przepisanie czegoś co przecież działa - więc nikt nie zapłaci za 3 miesiące prac, których efektu nie widać.
Tylko, że teraz doszedł problem, że nazwa.pl ma memory_limit 64M, w porządku, sądzę, że to i tak dużo, ale niestety - aplikacja przekracza tę wartość.

W tym momencie jedna z podstron (zawierająca jakieś tam dane z konkretnego miesiąca) wykonuje się do końca i wg memory_get_peak_usage wartość szczytowa pamięci to 60,4MB.
Ok, tyle, że na localhoście wartość ta to 50,5MB.
Z początku sądziłem, że po prostu załadowane rozszerzenia do PHP też zabierają swoją pamięć, ale chyba nie, gdyż "w środku" kodu, a przed wykonaniem najbardziej męczącej części kodu - wartości te są odpowiednio: 5,5MB na nazwa.pl i 6,0MB na localhost (odwrotne proporcje) - a na nazwie.pl z pewnością jest więcej rozszerzeń niż na moim localhoście.

Jedyny trop na jaki wpadłem - nazwa ma 32bitowe środowisko, ja mam 64bitowe. Jeżeli to nie powinno powodować różnicy (nie znam się na architekturze komputerów) - to gdzie szukać sposobu na uwolnienie tych 10MB? Nie jest to sprawa różnic w działaniu garbage collectora, bo z tego co się orientuję - PHP wyzbiera śmieci nie wcześniej aż CPU znajdzie na to czas, ale nie później niż gdyby miało mu braknąć pamięci.

Kod i dane na których operuję są identyczne.

0

bump, bo jutro do pracy :>

0

A co mamy ci napisać? Środowiska mogą być tak różne, że przy takiej ilości danych, które nam dałeś to nawet nie ma co zgadywać. Są profilery do PHP, użyj któregoś. Napisz do pomocy technicznej nazwa.pl, może ci jakiś zainstalują albo zwyczajnie zwiększą ten limit pamięci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1