Wpis z mikrobloga

#php #symfony #symfony2 #kohana #webdev #programowanie #pytanie

kolejne pytanie dziś, cały dzień przed komputerem, czytam i czytam i niewiele z tego wynika

jak to jest z tym cache'owaniem (będę pisał keszowaniem, trochę to bardziej naturalne) w symfony2? mam kilka pytań:

1

nie mam włączonego APC. pierwsze ładowanie strony w sf2 trwa 500 ms, a każde kolejne 30-60ms. dlaczego?

2

załóżmy, że chcę używać w skrypcie APC. czy będę musiał coś zmieniać w kodzie (jak w przypadku memcache) czy po prostu wystarczy to włączyć i co jakiś czas czyścić cache?

3

czy APC potrzebuje mieć coś specjalnego (np. flagi kompilacji php) czy można tego używać na każdym serwerze? jeśli nie, to na jakim da się tego używać, co jest wymagane (mam obecnie serwer na proserwer.pl, pewnie nie zadziała?)
  • 21
@DESZCZE:

Pierwsze ładowanie strony w sf2 trwa 500 ms, a każde kolejne 30-60ms. dlaczego?


Przy pierwszym uruchomieniu ładowane jest wszystko od zera i wrzucane do kesza. W ten sposób kolejne żądania ładują rzeczy z kesza i są szybsze.

załóżmy, że chcę używać w skrypcie APC. czy będę musiał coś zmieniać w kodzie (jak w przypadku memcache) czy po prostu wystarczy to włączyć i co jakiś czas czyścić cache?


O który kesz
czy APC potrzebuje mieć coś specjalnego (np. flagi kompilacji php) czy można tego używać na każdym serwerze? jeśli nie, to na jakim da się tego używać, co jest wymagane (mam obecnie serwer na proserwer.pl, pewnie nie zadziała?)


@MacDada: na hostingu współdzielonym raczej żadnego opcache nie uświadczysz, wynika to z tego że opcache używa shared memory (współdzieli cache na wszystkie procesy php), można to ominąć tworząc procesy php dla każdego usera ale
Przy pierwszym uruchomieniu ładowane jest wszystko od zera i wrzucane do kesza. W ten sposób kolejne żądania ładują rzeczy z kesza i są szybsze.


@MacDada: o tym wiem, ale skoro nie mam żadnego włączonego...?

1. Ładuje się klasa, parsuje, a jej opcode jest keszowany. W ten sposób w kolejnych wywołaniach klasa leci z pamięci. Jak zmienisz coś w klasie, musisz zrzucić cały kesz APC. Symfony nie ma nic do tego, tak
btw. nie inwestował bym za dużo czasu w ogarnięcie APC, z tego względu że nie jest już rozwijany, ostatnia wersja z września 2012 jest


@Jaslanin: zabiłeś mnie tym, tyle czytałem że w php6 ma być wbudowane apc ale nie patrzyłem na daty... cóż, chyba nie ma sensu uczyć się czegoś co się później nie przyda?

jak w takim razie mogę przyspieszyć stronę na współdzielonym serwerze?
@DESZCZE:

o tym wiem [o keszach symfonowych], ale skoro nie mam żadnego włączonego...?


Symfony keszuje sobie sparsowaną konfigurację, szablony twiga, obiekty proxy Doctrine'a, itp. Zajrzyj do katalogu cache.

czyli jak zainstaluję apc i zmapuję wszystkie klasy to będzie działało samo


Jeśli włączysz w konfiguracji APC cache opcode, to nawet nie musisz mapować – przy pierwszym użyciu klasy Ci się zakeszuje automatycznie.

a trzeba pisać do tego jakieś ify czy może doctrine
@DESZCZE: Ogólnie mam wrażenie, że chyba dopiero się uczysz PHP i Symfony. Moja propozycja jest taka:

1. Nie przejmuj się wydajnością, optymalizacją, itp. Na to będzie czas później. Na razie dobrze poznaj narzędzia z których chcesz korzystać.

2. Zainstaluj u siebie na komputerze środowisko developerskie: klasyczny (x)AMP: system + apache + mysql + php.

3. Uruchom Symfony na tym środowisku. Niech pokaże HelloWorlda i nic więcej.

4. Przeczytaj od deski do
Symfony ogólnie nie nadaje się na hostingi współdzielone bez shella. W teorii da się, ale znacznie utrudnia to deploy, zarządzanie, itp.


Pytanie: chcesz tylko potestować czy faktycznie postawić stronę z Symfony?


* Jeśli tylko potestować, pouczyć się, itp – nie potrzebujesz hostingu – rób to lokalnie na swojej maszynie.


* Jeśli chcesz faktycznie hostować gdzieś appkę Symfonową, znajdź lepszy hosting, bo na współdzielonym będziesz dzielnie walczył z problemami nieznanymi w normalnych środowiskach.
Ogólnie mam wrażenie, że chyba dopiero się uczysz PHP i Symfony


@MacDada: trafiłeś, od czterech dni

1. Nie przejmuj się wydajnością, optymalizacją, itp. Na to będzie czas później. Na razie dobrze poznaj narzędzia z których chcesz korzystać.


@MacDada: już raz się nie przejmowałem wydajnością przy pracy z KO3. po tym jaki bajzel się zrobił postanowiłem od początku robić wszystko jak należy, a nie jak wcześniej "aby działało"

2. Zainstaluj u
@DESZCZE:

po prostu nie chcę używać kohany do tej strony, bo to już stara technologia i nikt tego nie używa, zamiast tego przyzwyczajać się do nowoczesnego symfony


To proponuję http://silex.sensiolabs.org/ – microframework od twórcy Symfony. Idea jest odwrotna od „dużego” frameworka.

Symfony ma wszystko na raz, zdefiniowaną strukturę, od groma bajerów na starcie, dużo trzeba się nauczyć, żeby z tego efektywnie korzystać.

Silex ma na starcie ma praktycznie tylko obsługę kontrolerów/routingu.
@DESZCZE:

już raz się nie przejmowałem wydajnością przy pracy z KO3. po tym jaki bajzel się zrobił postanowiłem od początku robić wszystko jak należy, a nie jak wcześniej "aby działało"


Najpierw piszesz, żeby działało. Potem piszesz, żeby było „ładnie” (refactoring). Potem szukasz, co działa mało wydajnie i dopiero tylko te pojedyncze elementy optymalizujesz.

http://c2.com/cgi/wiki?PrematureOptimization
@MacDada: a są jakieś ogłoszenia typu "szukamy programisty php wymagania znajomość frameworka silex"? :)

I ta sama rada: przeczytaj całą dokumentację i dopiero bierz się za pisanie ;)


@MacDada: na mnie to raczej nie działa. zawsze przed nauką czegoś nowego owszem, przeglądam dokumentację, ale nie czytam od deski do deski, bo nic bym z tego nie zrozumiał. po prostu zaczynam coś pisać, a w miarę jak coś zmieniam i widzę
@MacDada: @Jaslanin: @pendeho:

załóżmy, że sytuacja trochę się zmienia - wykupię najtańszy hosting na linuxpl (gdzie jest dostęp do shella)

i co w takim przypadku zrobić aby strona była jak najszybsza?

1. nie robić nic - ktoś pisał że symfony samo keszuje klasy i cośtam, ale nie wiem jak by to wyszło w praktyce

2. memcached - opcja raczej odpada ze względu na dopłatę do hosting (dopłata 60 zł
@DESZCZE: RTFM – wszystko to jest w dokumentacji.

Mogę Ci wytłumaczyć czym jest reverse proxy, ale to wymaga wiedzy na temat protokołu HTTP. O nagłówki HTTP też później będziesz pytał? Czy może jednak czas siąść i się po prostu pouczyć?
@MacDada: z elektrody tu przyszedłeś? jeszcze zapytaj czy nie działa mi wyszukiwarka i czy mam bana na google...

zapytałem CO JEST NAJLEPSZE W MOIM KONKRETNYM PRZYPADKU a nie jak się czegokolwiek używa a dokładniej o wybór jednej z cztech dróg więc jeśli nie chcesz pomóc do GTFO

skoro twój czas jest dla ciebie tak cenny to po kiego #!$%@? tu jęczysz i mnie wołasz?
@DESZCZE:

i co w takim przypadku zrobić aby strona była jak najszybsza?


5. Przeczytać dokumentację, żeby zrozumieć jak Symfony działa.

zapytałem CO JEST NAJLEPSZE W MOIM KONKRETNYM PRZYPADKU


To nie jest żaden konkretny przypadek. To standardowa sytuacja. Piszesz appkę w Symfony, chcesz ją deploynąć, szukasz jak zoptymalizować jej działanie. Każdy tak robi przy każdym projekcie.