2010-04-06 10 views
5

Obecnie redaguję moją stronę za pomocą mojego własnego frameworka (jest to bardzo proste i robi dokładnie to, czego potrzebuję, nie potrzebuję czegoś takiego jak Zend lub Cake PHP). Zrobiłem dużo pracy, aby upewnić się, że wszystko jest poprawnie zapisane w pamięci podręcznej, buforując strony w plikach, aby uniknąć zapytań SQL i ogólnie ograniczyć liczbę zapytań sql.Pamięć php za dużo za dużo

Ogólnie wygląda na to, że jest bardzo szybki. Średni czas wykonania pierwszej strony (ponad 100 razy) wynosi 0,046152 mikrosekund.

Jedną z rzeczy, których nie jestem pewien, jest to, czy zrobiłem wystarczająco dużo, aby zmniejszyć zużycie pamięci php. Jedyny raz, gdy napotykam na problemy, to podczas przesyłania dużych plików.

Używając memory_get_peak_usage (TRUE), który, jak myślę, zwraca najwyższą ilość pamięci używanej podczas działania skryptu, średnia (przejęta ponad 100 razy) wynosi 157 2864 bajtów.

Czy to dobrze?

Zdaję sobie sprawę, że nie wiesz, co robię (jest to raczej proste, uzyskaj 10 najnowszych artykułów, liczbę komentarzy dla każdego, uzyskaj kontrolę użytkownika, popularne tagi na pasku bocznym itp.). Ale czy w ogóle martwiłbyś się scenariuszem wykorzystującym tego rodzaju pamięć, która uderzała 50 000 razy dziennie? Lub raz na sekundę w godzinach szczytu?

Zdaję sobie sprawę, że jest to bardzo otwarte pytanie. Mam nadzieję, że rozumiesz, że to trochę sztyletu w ciemności i naprawdę szukam tylko pewności, że nie umrze w strasznie upiorny dzień.

EDYCJA: Tylko mini eksperyment, który zrobiłem dla siebie. Pobrałem i zainstalowałem Wordpress oraz domyślną instalację bez dodatkowych dodatków, tylko jeden użytkownik i tylko jeden post i użyłem 10,5 megabajtów pamięci lub "11010048 bajtów". Zadowolony teraz z mojego 1.5mb.

Odpowiedz

3

Wartości wykorzystania pamięci mogą się znacznie różnić i podlegają fluktuacjom, ale jak już wspomniano w aktualizacji, zwykła instancja WordPress jest znacznie, dużo grubsza. Miałem duże problemy z uruchomieniem mechanizmu WordPress z limitem pamięci wynoszącym szesnaście megabajtów - nie wspominając już o wtyczkach wchodzących w grę. Więc powiedziałbym, że szczyt 1,5 megabajtów wykonujących normalne zadania jest całkiem w porządku.

Czas generowania jest bardzo zależny od sprzętu, na którym działa Twoja witryna, oczywiście. Jednak czas generacji wynoszący 0,046152 sekundy (zakładam, że masz tu na myśli sekundy) brzmi dla mnie bardzo dobrze w normalnych warunkach.

+0

Też pomyślałem sekundy. Zmierzam jednak czas za pomocą define ("START", microtime()) na początku i START - microtime() na końcu. Myślę, że piszę w myśleniu, że dałoby mi to trochę czasu w mikrosekundach, a nie w sekundach? – Rob

+0

@Rob czy używasz parametru 'float'? –

+0

php.net nie wydaje się określić, co jest domyślne. Ale nie, nie wysyłam żadnych argumentów do funkcji mikrotomowej. – Rob

3

Jest to subiektywne pytanie. PHP ma dużo narzutów i podczas wywoływania funkcji z PRAWDZIWĄ, narzut ten zostanie uwzględniony. Zobaczysz, co mam na myśli, gdy wywołasz funkcję w prostym skrypcie Hello World. Należy również pamiętać, że wyniki mogą się znacznie różnić w zależności od tego, czy PHP jest uruchamiane jako moduł apache lub FastCGI.

Niestety, nikt nie może zapewnić żadnych zapewnień. Zawsze znajdą się nieprzewidziane zmienne, które mogą obniżyć witrynę. Wykonaj testowanie obciążenia. Użyj profilera kodu, aby zawęzić lokalizację wąskich gardeł, aby sprawdzić, czy istnieją sposoby na zwiększenie skuteczności bloków kodu.

Encyklopedia Britannica uznała, że ​​były przygotowane, gdy dziesięć lat temu uruchomiły swoją reklamową encyklopedię. Deweloperzy nie wiedzieli, że ogłosimy to w Good Morning America w dniu premiery. Cała sprawa zawaliła się na kilka dni.

+0

Dlaczego będzie dużo narzutów podczas wywoływania funkcji z PRAWDA? Czy to nie FALSE wymaga więcej obliczeń? – Pacerier

0

Dopóki systemy nie są wymieniane, wykorzystanie pamięci jest uzasadnione. Dodatkowym problemem jest właśnie przedwczesna optymalizacja.