Ostatnie dwa lata przyniosły nam nie tylko blokady, niepokój i niepewność. Dla nas, programistów PHP, był to również ekscytujący czas. Tempo rozwoju naszego języka jest zdumiewające.
W chwili pisania tego tekstu witryna PHP we właściwy sposób wymienia PHP 8.1 jako wersję zalecaną do stosowania w nowych projektach. Przeczytaj ten artykuł, aby poznać nowe funkcje, z których możesz skorzystać.
W tym artykule udostępnimy nasze szczegółowe testy porównawcze wydajności dla różnych wersji PHP i platform, abyś wiedział, czego się spodziewać po aktualizacji.
Przetestowaliśmy 5 różnych wersji PHP w 17 systemach CMS opartych na PHP, w tym WordPress, Drupal, Joomla, Magento, SilverStripe i Modx, a także frameworkach takich jak Laravel, Symfony i innych.
Zacznijmy!
Stan PHP
Zanim przejdziemy do liczb, oto kontekst tego, co za chwilę przeczytasz.
Nie wierz w zamieszanie na Twitterze o śmierci PHP. Prawda jest taka, że PHP jest nadal jednym z najczęściej używanych języków programowania, szczególnie jeśli chodzi o tworzenie stron internetowych.
Wynika to głównie z faktu, że WordPress jest zbudowany na PHP, a ogromna część sieci jest obecnie obsługiwana przez WordPress.
Według W3Techs, PHP jest używane przez 77,4% wszystkich witryn internetowych, których język programowania po stronie serwera znają. Powiedzielibyśmy, że to całkiem dobry wskaźnik życia, prawda?
Ale to nie wszystko. Chociaż wielu przeciwników PHP będzie argumentować, że PHP jest utrzymywane wyłącznie w celu konserwacji starszego kodu, jest to twierdzenie dyskusyjne dla tych, którzy śledzą, co dzieje się w społeczności.
Tylko fakt, że Podstawa PHP ujrzał światło dzienne pod koniec 2021 roku i jest wspierany przez dużych graczy w branży, co jest dowodem na to, że PHP jest tu na dłuższą metę.
Ale tak naprawdę nie możemy ukryć słonia w pokoju: większość witryn internetowych opartych na PHP nadal używa przestarzałych i nieobsługiwanych wersji języka, co stwarza ryzyko bezpieczeństwa i wydajność poniżej optymalnej.
Dlaczego to? Cóż, jednym z powodów może być konserwatywny sposób myślenia wielu menedżerów IT, który wynika z obaw związanych z problemami z kompatybilnością wsteczną i niezbyt dobrze przetestowanymi wersjami.
Jednocześnie wszyscy są zgodni, że jeśli nie ma innowacji, nie ma wzrostu. Zatem właściwą decyzją nie jest pozostawienie rzeczy takimi, jakie są na zawsze, ale raczej dokładne zaplanowanie i wykonanie odpowiednich migracji.
Przed podjęciem tak ważnej decyzji powinieneś rozważyć korzyści, jakie odniesiesz, podejmując ją.
I to właśnie daje ten artykuł: przedsmak poprawy wydajności, której doświadczysz dzięki wysiłkom aktualizacyjnym.
Hostuj strony internetowe PHP z łatwością [Starts at $10 Credit]
- Darmowa inscenizacja
- Darmowa kopia zapasowa
- PHP 8.0
- Nieograniczone strony internetowe
SPRÓBUJ TERAZ
Testy porównawcze PHP (2022)
Za każdym razem, gdy pojawia się nowa wersja języka programowania, wprowadza ona nowe funkcje, poprawki błędów i, ogólnie rzecz biorąc, skuteczniejsze sposoby osiągania tych samych celów.
W przypadku PHP tempo tego procesu przyspiesza od wersji 7. Umożliwiło to programistom pisanie bezpieczniejszego, łatwiejszego w utrzymaniu i solidniejszego kodu przy mniejszym wysiłku.
Chociaż są to z pewnością pożądane cechy języka programowania, jedyne trudne porównanie, jakiego można dokonać, dotyczy wydajności: ile czasu zajmuje wykonanie tego samego kodu w dwóch wersjach PHP? Właśnie to omówimy w tym artykule.
Aby było uczciwie, nie będziemy skupiać się tylko na jednym konkretnym narzędziu, ale raczej na wyborze kilku najpopularniejszych systemów CMS i frameworków, mając nadzieję uwzględnienia jak najwięcej ze świata PHP.
Pamiętaj jednak, że nie każda platforma obsługuje każdą wersję PHP.
Nasza metodologia
Przeprowadziliśmy test porównawczy każdego testowanego adresu URL generującego 100 żądań na sekundę w ciągu 60 sekund.
Zmierzyliśmy średni czas odpowiedzi Loader.io.
Specyfikacje sprzętu
Szczegóły naszego środowiska testowego znajdziesz poniżej:
Maszyna: Procesory 2-rdzeniowe, 4 GB RAM, dysk NVMe 80 GB.
System operacyjny: Debiana 4.19.208-1
Serwer internetowy: Apache/2.4.51
Baza danych: MariaDB 0.4.20-MariaDB-1:10.4.20+maria~buster-log
Wersje PHP: 7,2, 7,3, 7,4, 8,0, 8,1
Buforowanie strony: Wyłączone na wszystkich platformach i konfiguracjach.
Pamięć podręczna OP: Włączono OPcache na wszystkich platformach i konfiguracjach przy użyciu następujących ustawień:
opcache.blacklist_filename => brak wartości => brak wartości opcache.consistency_checks => 0 => 0 opcache.dups_fix => wyłączone => wyłączone opcache.enable => włączone => włączone opcache.enable_cli => wyłączone => wyłączone opcache.enable_file_override => Wył. => Wył. opcache.error_log => brak wartości => brak wartości opcache.file_cache => brak wartości => brak wartości opcache.file_cache_consistency_checks => Wł. => Wł. opcache.file_cache_only => Wył. => Wył. opcache.file_update_protection = > 2 => 2 opcache.force_restart_timeout => 180 => 180 opcache.huge_code_pages => Wył. => Wył. opcache.interned_strings_buffer => 8 => 8 opcache.lockfile_path => /tmp => /tmp opcache.log_verbosity_level => 1 = > 1 opcache.max_accelerated_files => 10000 => 10000 opcache.max_file_size => 0 => 0 opcache.max_wasted_percentage => 5 => 5 opcache.memory_consumption => 128 => 128 opcache.opt_debug_level => 0 => 0 opcache.optimization_level => 0x7FFEBFFF => 0x7FFEBFFF opcache.preferred_memory_model => brak wartości => brak wartości opcache.preload => brak wartości => brak wartości opcache.preload_user => brak wartości => brak wartości opcache.protect_memory => Wyłączony => Wyłącz opcache. restryk_api => brak wartości => brak wartości opcache.revalidate_freq => 2 => 2 opcache.revalidate_path => Wył. => Wył. opcache.save_comments => Wł. => Wł. opcache.use_cwd => Wł. => Wł. opcache.validate_permission => Off => Off opcache.validate_root => Off => Off opcache.validate_timestamps => On => On
Wyniki każdego testowanego przez nas systemu CMS
Zacznijmy analizować, jak każda wersja PHP radzi sobie z CMS-em.
WordPressa 6.0
WordPressa władzę nad 40% wszystkich stron internetowych w Internecie. Używany jest głównie do tworzenia blogów i jest narzędziem darmowym o otwartym kodzie źródłowym.
Na początek przetestowaliśmy jego wersja rozwojowa: 6.0 RC 3.
Wyniki:
Jeśli chodzi o wydajność, nie ma dużej różnicy pomiędzy wersjami PHP od 7.2 do 7.4, ale sytuacja zmienia się po przejściu na wersję 8.0 wraz ze wzrostem czasu reakcji. Jednak wraz z aktualizacją PHP 8.1 czas reakcji drastycznie się zmniejsza, co wskazuje, że WordPress 6.0 RC-3 jest przygotowany na aktualizację.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,1 > 7,3 > 7,2 >7,4 > 8,0
WordPress na wielu serwerach
WordPress ma funkcję o nazwie Wiele witryn, który umożliwia utworzenie kilku stron internetowych w jednej instancji WordPress. Aktywując ją, użytkownicy mogą zarządzać siecią poszczególnych serwisów z jednego Panelu Kontrolnego.
W naszym przypadku stworzyliśmy sieć trzech stron internetowych do instalacji WordPressa 6.0 RC-3.
Wyniki:
Przypadek WordPress Multisite jest podobny do przypadku WP nie obsługującego wielu witryn, dlatego najlepiej jest wybrać PHP 8.1, ponieważ czasy odpowiedzi są znacznie krótsze niż w starszych wersjach.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,1> 7,2 > 7,3 > 7,4 > 8,0
Joomla 4.1.4
Joomla to kolejny bardzo popularny CMS w ekosystemie PHP. W przeciwieństwie do WordPressa Joomla jest skierowana do bardziej doświadczonych użytkowników poszukujących większej liczby opcji dostosowywania.
Wyniki:
Biorąc pod uwagę powyższy wykres, PHP 8.0 ma znaczną przewagę nad swoimi poprzednikami, a nawet zapewnia lepsze czasy reakcji niż nowsza aktualizacja, czyli PHP 8.1.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,0 > 8,1 > 7,4 > 7,3 > 7,2
Srebrny Pasek
SilverStripe to nowszy CMS niż WordPress. I Srebrny Prążek oferuje więcej opcji dostosowywania dla bardziej wyrafinowanych użytkowników.
Wyniki:
Średni czas reakcji w PHP 7.2 na SilverStripe jest znacznie wyższy niż w przypadku wszystkich jego następców. Jak widać na wykresie, stawki spadają z każdą aktualizacją, dając najlepsze rezultaty w PHP 8.0.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,0 > 8,1 > 7,4 > 7,3 > 7,2
Nie ma nic tak prostego jak wdrażanie aplikacji PHP w chmurze
Dzięki DreamHost możesz uruchomić swoje aplikacje PHP na zarządzanych serwerach w chmurze w ciągu zaledwie kilku minut.
MODX
MODX to CMS zaprojektowany z myślą o bezpieczeństwie i wydajności. The MODX oferuje również większość funkcji dostępnych w WordPress lub SilverStripe.
Wyniki:
W przypadku ModX wersje PHP nie różnią się znacząco średnimi czasami odpowiedzi. Nadal zalecamy przejście na nowsze wersje ze względu na wszystkie inne korzyści z nimi związane. Jeśli zależy Ci na najlepszych czasach reakcji, zdecydowanie zwycięzcą będzie wersja 8.0.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,0 > 8,1 > 7,2 > 7,4 > 7,3
Literówka 3
Typo3 to CMS przeznaczony do użytku korporacyjnego, który umożliwia łatwe skalowanie.
W tym przypadku Literówka 3 porównania można dokonać tylko dla wersji PHP powyżej 7.3.
Wyniki:
Jeśli prowadzisz witrynę internetową opartą na Typo3, powinieneś rozważyć aktualizację do PHP 8.0 lub 8.1 z poprzednich wersji ze względu na nowocześniejsze funkcje i lepszą wydajność.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,1 > 8,0 > 7,4
Craft CMS 3.7.30.1
CraftCMS to CMS przeznaczony dla zaawansowanych użytkowników, którzy mogą dostosować jego funkcje, tworząc własny kod. W momencie pisania tego tekstu CraftCMS nie obsługuje wersji php powyżej 7.4.
Wyniki:
W przypadku Craft CMS wskazane jest przejście na PHP 7.4, choć może nie zwiększyć znacząco wydajności. Ponieważ Craft CMS nie obsługuje najnowszych wersji PHP (8.0 i 8.1), optymalne jest użycie PHP 7.4, zgodnie z zaleceniami zawartymi w ich dokumentacji. Dodatkowo, aby uzyskać bardziej usprawnione działanie, rozważ zapoznanie się z opcjami hostingu Craft CMS. Podobnie, jeśli szukasz alternatyw obsługujących najnowsze wersje PHP, ExpressionEngine Hosting może być realnym wyborem, oferującym solidne i aktualne zarządzane rozwiązania hostingowe.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 7,4 > 7,2 > 7,3.
PaździernikCMS 2.0
OctoberCMS to CMS stworzony przy użyciu Framework Laravel i jest skierowany do programistów.
Wyniki:
OctoberCMS 2.0 nie obsługuje instalacji wcześniejszych niż 8.0. Jeśli porównamy czasy reakcji PaździernikCMS w PHP 8.0 i 8.1 zaleca się korzystanie z pierwszego.
Hierarchia liczby odpowiedzi na sukces (im niższa, tym lepsza): 8,0 > 8,1
Drupala
Drupal jest CMS-em ogólnego przeznaczenia. Jest szeroko stosowany w środowiskach korporacyjnych do obsługi intranetów, baz wiedzy i współpracy biznesowej online.
Minimalna wersja PHP dla Drupala w momencie pisania tego tekstu to 7.3.
Wyniki:
Z Drupala, zalecamy trzymanie się PHP 8.0, jeśli priorytetowo traktujesz średni czas odpowiedzi. Aktualizacja do wersji 8.1 byłaby w tym przypadku szkodliwa, ponieważ czasy reakcji rosną wykładniczo w porównaniu do poprzednich wersji.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,0 > 7,4 > 7,3 > 8,1
Rozwiązania e-commerce
Drugą kategorią aplikacji, którą będziemy analizować, są rozwiązania eCommerce, kolejny bardzo popularny przypadek użycia PHP.
WordPress 6.0 + WooCommerce 6.5
WooCommerce to bardzo szeroko stosowane rozszerzenie WordPress, które umożliwia sprzedaż online. Testowaliśmy wersję 6.5 na instalacji WordPress 6.0 RC-3.
Wyniki:
Średnie czasy odpowiedzi przed wersją PHP 8.1 są prawie podobne dla wszystkich wersji. W przypadku WordPress 6.0 i WooCommerce 6.5 zdecydowanie zaleca się aktualizację do wersji PHP 8.1 ze względu na poprawę wydajności i krótki czas reakcji.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,1 > 7,4 > 8,0 > 7,3 > 7,2
Magento 2.4.3
Magento to solidna i w pełni funkcjonalna platforma eCommerce. W przeciwieństwie do WooCommerce, nie jest on oparty na WordPressie.
Jego zastosowanie dotyczy głównie średnich i dużych sklepów internetowych, które obsługują złożone operacje.
Minimalna wersja PHP potrzebna do uruchomienia Magento 2.4.3 to 7.4.
Testowany adres URL: /
Wyniki:
Dla Magento 2.4.3, zalecamy wybranie PHP 8.0 ze względu na krótki czas reakcji.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,0 > 7,4
PrestaShop
PrestaShop to platforma eCommerce, która w przeciwieństwie do Magento jest przeznaczona dla początkujących użytkowników.
W chwili pisania tego tekstu PrestaShop obsługuje PHP do wersji 7.4.
Wyniki:
Prestashop wydaje się działać nieco lepiej na PHP 7.3 i PHP 7.4 niż 7.2 i nie obsługuje jeszcze wersji PHP 8.x+.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 7,3 > 7,4 > 7,2
Ramy
Ostatnim przystankiem w naszej podróży jest analiza niektórych popularnych Frameworków (bibliotek ogólnego przeznaczenia używanych do tworzenia niestandardowych, bogatych aplikacji).
W tym przypadku zamontowaliśmy instancję domyślnego projektu udostępnianego przez każdy z nich i uruchomiliśmy testy.
Laminaty (Zend Framework)
Laminas to framework PHP MVC. Baza kodu nazywała się kiedyś Zend Framework, ale projekt został kilka lat temu przeniesiony do Linux Foundation i od tego czasu jest dziełem społeczności.
W chwili pisania tego tekstu Laminas obsługuje wersję PHP począwszy od 7.4.
Wyniki:
Sprawa dla Laminaty frameworks jest nieco trudniejsze, ponieważ większość problemów z wydajnością występuje w aplikacjach zbudowanych na nich, a nie w samych frameworkach.
W przypadku aplikacji tworzonych na zamówienie przejście na PHP 8.0 ma ogromny sens, ponieważ otworzy przed Tobą nowe możliwości lepszej obsługi klientów. Nie zalecamy aktualizacji do wersji 8.1, ponieważ wykres sugeruje stosunkowo dłuższe czasy reakcji w tej wersji.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,0 > 7,4 > 8,1
Popraw szybkość swojej aplikacji PHP o 300%
DreamHost oferuje serwery dedykowane z pamięcią masową SSD, niestandardową wydajnością, zoptymalizowanym stosem i nie tylko, zapewniając o 300% krótszy czas ładowania.
Laravel
Laravel to framework PHP MVC zaprojektowany tak, aby był łatwy do nauczenia się i wdrożenia. Laravel jest obecnie jednym z najpowszechniej używanych i lubianych frameworków PHP.
Testowany adres URL: /
Wyniki:
Wykres wyraźnie pokazuje, jak czasy odpowiedzi maleją po PHP 7.3 i dają najlepsze wyniki w PHP 8.0.
Podobnie jak powiedzieliśmy o Laminas, Twoja decyzja o aktualizacji powinna być podejmowana wyłącznie ze względów wydajnościowych, a nie nowych funkcji oferowanych przez język.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im wyższa, tym lepsza): 8,0 > 7,2 > 7,4 > 7,3
Symfony
Symfony to framework PHP FullStack zbudowany w oparciu o zasady SOLID i inne najlepsze praktyki branżowe. Dla nowicjuszy może to być nieco trudniejsze, ale jednocześnie zapewnia środowisko odpowiednie do długoterminowej konserwacji aplikacji.
Wyniki:
Sprawa Symfony nie odbiega zbytnio od innych frameworków analizowanych w tym artykule.
Różnica polega na tym, że Symfony szybko wykorzystuje nowe możliwości językowe w celu ulepszenia swojej bazy kodu, dlatego zalecamy aktualizację do PHP 8.0, aby uzyskać najlepszą wydajność i krótki czas reakcji.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,0 > 7,4 > 7,3 > 7,2
CodeIgniter
CodeIgniter to prosty framework PHP MVC, którego zadaniem jest szybkie tworzenie aplikacji. PHP 8.1 działa najszybciej z CodeIgniterwykonując o 8,48% więcej żądań na sekundę w porównaniu do PHP 8.0.
Wyniki:
W przypadku CodeIgnitera średnie czasy reakcji są podobne dla wszystkich wersji PHP wcześniejszych niż 8.1, dlatego zalecamy wybranie wersji 8.0 ze względu na krótki czas reakcji i lepsze ogólne wyniki wydajności.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,0 > 8,1 > 7,4 > 7,3 > 7,2
Yii
Yii to framework PHP MVC zaprojektowany z myślą o wydajności i łatwości użytkowania.
Wyniki:
Podobnie jak CodeIgniter, średni czas reakcji w Yii jest podobny dla wersji 7.2 do 8.0 i wzrasta w PHP 8.1. Dlatego zalecamy wybranie wersji PHP 8.0 dla Yii.
Hierarchia liczby odpowiedzi zakończonych sukcesem (im niższa, tym lepsza): 8,0 > 7,4 > 7,3 > 7,2 > 8,1
Wniosek
Należy pamiętać, że wydajność to tylko jeden aspekt, który należy wziąć pod uwagę przy rozważaniu aktualizacji. I chociaż jest to zdecydowanie ważny czynnik, nie powinien być jedynym czynnikiem wpływającym na Twoją decyzję.
W rzeczywistości problemy z wydajnością można rozwiązać na poziomie infrastruktury, wykorzystując takie narzędzia jak Lakier lub Redisa.
Zwróć także uwagę na nowe funkcje języka. To właśnie pomaga tworzyć wydajniejsze aplikacje przy mniejszym wysiłku i ulepszeniach bezpieczeństwa dostępnych w nowszych wersjach językowych.
I tak, migracja nie jest trywialnym zadaniem, ale społeczność PHP ma do Twojej dyspozycji wiele zasobów, które mogą pomóc Ci zmaksymalizować szanse na sukces, np. Rektor.
Doładowany zarządzany hosting PHP – zwiększ prędkość swojej aplikacji PHP o 300%
W każdym razie najbezpieczniejszym sposobem przeprowadzenia tego rodzaju aktualizacji jest najpierw sklonowanie bieżącego serwera na serwer dostępny prywatnie (zwykle nazywany serwerem przejściowym). Następnie wprowadzaj zmiany w kodzie w stosunkowo wolnym tempie i sprawdź, czy wszystko działa zgodnie z oczekiwaniami. Napraw wszelkie problemy, jakie możesz napotkać, a gdy będziesz zadowolony z wyników, albo awansuj ten serwer do wersji produkcyjnej (zmień definicje DNS, aby wskazywały nowy adres IP). Lub jeśli nie jest to wykonalna opcja, zreplikuj zmiany na oryginalnym serwerze.