Neuroróżnorodność w miejscu pracy
17.10.20236 min
Mateusz Mazurek

Mateusz MazurekPrzedsiębiorca internetowy

Zrozum, jak działa interpreter PHP

Co robi i dlaczego jest aż tak ważny?

Zrozum, jak działa interpreter PHP

Interpreter PHP to element, bez którego dynamiczne strony internetowe - w tym np. blogi czy e-sklepy - nie byłyby w stanie funkcjonować. To właśnie on odpowiada za to, żeby na stronie wszystko było na miejscu. W jaki sposób to robi i dlaczego jest aż tak ważny? Postaram się Ci to wytłumaczyć.

Zdarza Ci się robić zakupy w dużych hurtowniach lub sklepach z obsługą magazynową (gdzie odbiór produktu odbywa się w zewnętrznym magazynie)? W takim wypadku zrozumienie interpretera PHP może okazać się naprawdę łatwe.


Interpreter PHP jako pracownik obsługi magazynu

Idziesz do kasy w sklepie, opłacasz zamówienie i otrzymujesz dokument, z którym następnie udajesz się do magazynu. 

Ten dokument - to kod PHP

W magazynie czekasz w kolejce, aż dochodzisz do okienka, w którym pracownik odbiera od Ciebie dokument odczytuje go i… najczęściej każe poczekać kilka minut. 

Ten pracownik - to interpreter PHP. 

Po odczekaniu kilku minut, otrzymujesz opłacony produkt z magazynu. Odbierasz towar z zadowoleniem i wychodzisz z magazynu.

Ten produkt - to strona WWW.

Rola interpretera PHP

Gdy wchodzisz na stronę internetową, serwer kontaktuje się z bazą danych przy użyciu interpretera PHP - a efektem tego jest gotowy plik HTML, który umożliwia wyświetlanie się strony w przeglądarce.


Prosty schemat wyświetlania strony z wykorzystaniem interpretera PHP (geekflare.com).

Kiedy powiem Ci, że interpreter PHP odpowiada za kontakt z bazą danych, za pobranie kodu i skryptów potrzebnych do wyświetlenia strony - może to brzmieć nieco zawile. Ale jeżeli porównam interpretera PHP do pracownika magazynu, który pośredniczy w wydaniu opłaconego towaru - to sprawa staje się nieco jaśniejsza.

Korzystając z tej analogii można także pokusić się o wytłumaczenie najczęściej spotykanych problemów związanych z interpreterem PHP. Przejdźmy teraz do nich.

Limit procesów PHP na serwerze

Hosting współdzielony nakłada często na użytkowników rozmaite ograniczenia. Gdyby tego nie robił, mogłoby zdarzyć się tak, że zasoby hostingowe są w pełni wykorzystywane przez stronę czy aplikację jednego z klientów. Jednak limity serwerowe odnoszą się nie tylko do transferu.

Limit jednoczesnych procesów PHP oznacza, do jak wielu procesów jednocześnie może być zaangażowany interpreter PHP. Jeżeli limit ten wynosi 10 - to jednocześnie tylko 10 procesów może zostać obsłużonych.

Wyobraź sobie, że do magazynu przychodzi jednocześnie 15 klientów - a są tam tylko 3 okienka i 3 pracowników obsługi. Jak się zapewne domyślasz - klienci muszą czekać w kolejce aż zostaną poproszeni do okienka.

Tak samo jest ze stroną internetową. Gdy jednocześnie stronę odwiedza kilkaset osób i każda z nich wykonuje jakąś akcję (np. składa zamówienie, przegląda ofertę, otwiera nowe podstrony), to zaangażowany do tego jest interpreter PHP.

Oczywiście - obsłużenie procesu PHP jest kilkaset czy nawet kilka tysięcy razy szybsze niż wydanie towaru z magazynu. Jednak podana analogia jest zupełnie trafna. Jeżeli limit PHP będzie za niski - to tak samo, jak gdyby mieć za mało pracowników do obsługi klientów.

Przeczytaj też: 7 rzeczy, o których nie mówi Ci Twój dostawca hostingu


Wydajność serwera - a wydajność PHP

Wydaje Ci się, że wystarczy zwiększyć limit PHP, aby strona zaczęła działać szybciej? Niestety to tak nie działa. Interpreter PHP używa zasobów serwera - w szczególności mocy obliczeniowej procesora oraz pamięci operacyjnej RAM - i jeżeli tutaj pojawią się niedobory, to nawet brak limitu jednoczesnych procesów PHP wcale nie pomoże. 

Jeżeli Twoja strona może liczyć np. na przydział mocy obliczeniowej na poziomie przynajmniej 1 GHz (1 rdzenia) i 1 GB pamięci RAM, to wtedy możesz liczyć, że nawet podczas większego ruchu, nie dojdzie do zakolejkowania zbyt dużej liczby zapytań. Choć oczywiście tym przypadku im więcej, tym lepiej.


Przykładowy błąd przeciążonego interpretera PHP (codewithmike.com).

To tak samo jak z magazynem. Nieraz zbyt dużo pracowników na zbyt małym magazynie może wcale nie przyspieszyć wydawania towarów klientom. Dopiero, gdy wraz z liczbą pracowników unowocześniana jest także całą infrastruktura - wtedy można liczyć na podniesienie wydajności.

Pamięć podręczna a odciążenie intepretera PHP

Gdy mowa o interpreterze PHP, koniecznie trzeba wspomnieć także o silnikach pamięci podręcznej. Silniki takie jak Redis czy Memcached sprawiają, że pewne (często wykorzystywane) dane potrzebne do wyświetlenia strony przechowuje się w pamięci szybkiego dostępu (cache). Dzięki temu interpreter nie musi wysyłać zapytania do bazy danych - po prostu korzysta z danych, które ma “pod ręką”.

Pamięć szybkiego dostępu sprawia, że nie trzeba z każdym zapytaniem kierować się do bazy MySQL (wpengine.com).

I tutaj analogia z pracownikiem magazynu także sprawdza się znakomicie. Dane przechowywane w pamięci szybkiego dostępu to np. produkty, które cieszą się wyjątkową popularnością. Może to także być stałe zamówienie składane przez jednego z klientów. Dzięki temu pracownik nie musi szukać rzeczy na magazynie - może je mieć przygotowane w pobliżu swojego stanowiska pracy. Wtedy wystarczy, że po nie sięgnie - a proces wydawania towaru jest dużo szybszy.

Przeczytaj też: Nadeszła era HTTP/3. Co wnosi nowy standard komunikacji?

Wersja PHP na serwerze

PHP to podstawa dynamicznych stron internetowych. Jednak ma ona swoje generacje - zmieniające się na przestrzeni lat. Po wprowadzeniu nowej generacji jest ona aktywnie wspierana jedynie przez 2 lata. Potem już tylko przez ok. 12 miesięcy wypuszczane są do niej łatki bezpieczeństwa. Po tym czasie staje się ona nieaktualna. Dobrze jest korzystać zawsze z najbardziej aktualnej wersji PHP na serwerze (obecnie linia PHP 8.x). Dlaczego? Tutaj także posłużę się analogią. :)

Wersja PHP to coś na kształt systemu obsługi magazynu. Gdy stare PHP oznacza szukanie informacji o produktach w skoroszytach i segregatorach, to nowe PHP jest korzystaniem z nowoczesnych systemów do zarządzania magazynem. Dzięki nim wystarczy np. odczytać QR kod na zamówieniu, aby znaleźć dokładną lokalizację towaru na zapleczu. Dzięki temu obsługa klienta jest po prostu szybsza i mniej męcząca.

Benchmarki wersji PHP od 5.5 do 8.1 (serverdiary.com)

Warto więc sprawdzić wersję PHP i zaktualizować ją do najnowszej wersji. W przypadku hostingów współdzielonych będzie to najcześciej zmiana wersji PHP na nowszą

Optymalizacja kodu a wydajność PHP

Jeżeli już widzisz, jak działa PHP, to na pewno łatwiej Ci zrozumieć, dlaczego optymalizacja kodu na stronie jest tak ważna. Jeżeli programujesz samodzielnie, warto pogłębiać wiedzę z PHP pod kątem optymalizacji i pisania wydajnego kodu. Jeżeli nie jesteś programistą, ale korzystasz z dziesiątek wtyczek, skryptów, gotowych szablonów itd. to nie powinno Cię dziwić, że strona ładuje się za długo. Pamiętaj - że każdy z tych elementów składa się z dziesiątek funkcji ogólnych - niedostosowanych bezpośrednio do Twojej strony.

To tak - jak gdyby podać pracownikowi magazynu 10 osobnych świstków papieru z informacjami o produktach do wydania. Na jednej kartce coś jest wykreślone, na drugiej - dopisane ołówkiem. Wszystko to sprawia, że zanim pracownik dojdzie z tym wszystkim do porządku, minie sporo czasu. I w konsekwencji klient znacznie dłużej czeka na swój produkt - tak jak odwiedzający na wyświetlenie strony.

Strona wyświetlona - towar wydany. Jak widzisz - ten proces składa się z wielu etapów i warto na niego spojrzeć z szerszej perspektywy. Jaki jest z tego wniosek? 

Otóż - jeżeli Twój blog cieszy się dużym ruchem, generujesz sporą sprzedaż w e-sklepie lub gdy prowadzisz kampanię marketingową dla swojej strony - to interpreter PHP ma coraz więcej do roboty. Dobrze, aby rozwój witryny szedł w parze z wyższymi pakietami hostingowymi - takimi, które będą solidnym filarem Twojej strony.


Autorem tekstu jest Mateusz Mazurek. Przedsiębiorca internetowy. Solopreneur. Twórca stron internetowych i wydawca blogów. Klient dziesiątek różnych firm hostingowych w Polsce i za granicą. Autor bezpłatnego poradnika Jak Wybrać Hosting? oraz rankingu hostingów JakWybraćHosting.pl.

<p>Loading...</p>