Dlaczego PHP Nie Umrze (i Co To Odkrywa na Temat Prawdziwego Web)

Opublikowano: przez John Robison
Dlaczego PHP Nie Umrze (i Co To Odkrywa na Temat Prawdziwego Web) thumbnail

Wyszukaj „PHP is dead” na Reddit, a znajdziesz setki wątków, które ogłaszają to za przestarzałe, reliktem ery Web 2.0.

WordPress, stworzony w PHP, napędza 43% całej sieci. Wikipedia przetwarza 24 miliardy wyświetleń stron miesięcznie na backendach PHP. Trzy na cztery strony internetowe, które odwiedzasz, przetwarzają twoje żądanie w tym samym języku, który internet nazywa „martwym”.

Ale co utrzymuje PHP przy życiu, kiedy Node, Python, Go i Rust obiecały go zastąpić? I co jego przetrwanie ujawnia na temat tego, jak naprawdę działa sieć?

Twoja Strona. Stworzona Dla Ciebie.
100% Za Darmo

Bez umiejętności projektowania. Bez kreatorów. Bez kłopotów. Tylko rezultaty.

Rozpocznij
DreamHost Liftoff thumbnail

Krótka Historia „Narzędzi Do Stron Domowych”

PHP powstało przez przypadek. W 1994 roku Rasmus Lerdorf napisał zestaw binarnych interfejsów bramowych (CGI) w C, aby śledzić, kto ogląda jego internetowe CV.

Nazwał to „Narzędzia Strony Domowej”, skrótem od Zestawu Narzędzi PHP.

Lerdorf nie projektował go z żadną wielką filozofią, tak jak Python z jego czytelnością czy Java z jej przenośnością. Zbudował młotek do konkretnego gwoździa: umieszczania dynamicznej treści na statycznych stronach internetowych.

Do 1997 roku PHP ewoluowało do wersji 3, a akronim zmienił się na „PHP: Hypertext Preprocessor”. Najlepsze było to, że PHP po prostu działało. Wgrałeś plik, a serwer go przetwarzał. Ta pragmatyczna cecha nigdy nie opuściła języka.

Od rewolucji obiektowej w PHP 5 do skoków wydajności w PHP 7 i 8, język ten skupiał się na Internecie. Nie stał się językiem systemowym ani narzędziem do tworzenia aplikacji mobilnych. Pozostał w swojej dziedzinie i ostatecznie wybrukował tę ścieżkę złotem.

Otrzymuj treści bezpośrednio do swojej skrzynki odbiorczej

Zapisz się teraz, aby otrzymywać wszystkie najnowsze aktualizacje bezpośrednio do swojej skrzynki odbiorczej.

Jak Duży Wpływ Ma Naprawdę PHP?

Według W3Techs, PHP obsługuje 72,6% wszystkich stron internetowych, dla których posiadamy dane dotyczące języka programowania po stronie serwera. Trzy na każde cztery odwiedzane strony prawdopodobnie przetwarzają Twoje zapytanie przy użyciu PHP.

Wykres w formie pączka pokazujący użycie języków po stronie serwera, z PHP na czele z 72,6%, po którym następują Ruby, JavaScript, Java, Scala i inne.

Znacząca część pochodzi z WordPress, który napędza 43% internetu. W rzeczywistości większość stron na naszym shared hosting korzysta z PHP.

Ale to nie tylko blogi. PHP obsługuje Wikipedię oraz niezliczone platformy e-commerce, które rocznie przetwarzają transakcje na miliardy.

Kiedy patrzysz na „martwy” język, widzisz silnik internetu. Większość firm nie potrzebuje architektur mikroserwisów. Muszą wyświetlić tekst na ekranie, przechwycić formularz kontaktowy i przetworzyć płatność kartą kredytową.

PHP robi to natywnie.

Dlaczego Tak Często Mówi Się, Że PHP Jest „Martwe”?

Mimo dominacji na rynku, narracja „PHP jest martwe” utrzymuje się.

Dlaczego? Ponieważ świat technologii myli „nudne” z „martwym”.

Jesteśmy uzależnieni od nowości. Nowy Framework pojawia się na Hacker News, a programiści spieszą się, aby przepisać swoje stosy. Ta perspektywa ignoruje to, co solidna infrastruktura faktycznie oznacza.

Instalacja hydrauliczna w twoim domu nie jest ekscytująca. Nie zmieniła się zbyt wiele przez ostatnie pięćdziesiąt lat. Ale nie wymieniasz rur za każdym razem, gdy wynaleziony zostaje nowy stop metali. Polegasz na rurach, ponieważ działają i ponieważ hydraulicy wiedzą dokładnie, jak je naprawić.

Co kilka lat pojawia się nowy pretendent próbujący obalić PHP. Ruby on Rails obiecywało szczęście dla programistów. Node.js obiecywało jeden język dla frontendu i backendu. Go obiecywało surową szybkość.

Komiks internetowy ilustrujący powtarzające się twierdzenia, że PHP zostanie zastąpione przez nowsze technologie na przestrzeni lat, kulminujące w 2025 roku, kiedy to PHP obchodzi swoje 30-lecie.

Za każdym razem, prasa technologiczna ogłaszała koniec ery PHP. A za każdym razem, liczby użytkowników nie chciały spadać.

Dlaczego Nie Widzieliśmy Innego Języka Internetowego Jak PHP Przez Ponad 30 Lat?

Przez ponad trzy dekady reinwentury baz danych, frontendów i serwerów, nikomu nie udało się skopiować modelu PHP. Widzieliśmy lepsze języki i szybsze środowiska wykonawcze, ale nie widzieliśmy innego narzędzia, które działałoby jak PHP.

Diagram porównujący cykle życia Node.js i PHP, pokazujący przepływ żądania Node start-run-die oraz trwałą pamięć aplikacji PHP na żądanie

1. Wprowadza Logikę Bezpośrednio Do Twojego HTML

PHP zostało zaprojektowane do bezpośredniego osadzania w HTML. W prawie każdym innym stosie, „program” i „wyjście” są ściśle oddzielone.

Na przykład, korzystając z Pythona (Django) lub Ruby (Rails), piszesz program, który przetwarza dane, a następnie przekazujesz te dane do silnika szablonów, aby wygenerować HTML.

PHP pozwala otworzyć plik, napisać standardowy HTML, a następnie otworzyć tag <?php wewnątrz <div>, aby uruchomić pętlę lub pobrać wiersz z bazy danych. To wydaje się być naturalnym rozszerzeniem twoich stron. Początkujący może skopiować fragment, wkleić go do pliku HTML i natychmiast zobaczyć dynamiczne wyniki.

Łatwość implementacji stworzyła ogromny ekosystem motywów i pluginów, który dziś napędza WordPressa.

2. Architektura „Urodzony, by Umrzeć” Poprawia Stabilność Języka

W językach obsługujących procesy długotrwałe, takich jak Node.js, Java czy Python, aplikacja jest ładowana do pamięci i pozostaje w niej, obsługując tysiące żądań przez wiele godzin lub dni.

To jest wydajne, ale kruche. Błąd programisty z otwartą zmienną przeradza się w wyciek pamięci, aż serwer ulegnie awarii. Jedno zapytanie z nieobsłużonym wyjątkiem może doprowadzić do awarii całego procesu dla wszystkich.

PHP przyjmuje inną strategię. Kończy działanie procesu po każdym pojedynczym żądaniu. Użytkownik odwiedza stronę, PHP się uruchamia, ładuje niezbędne zasoby, wykonuje kod, wysyła HTML, a następnie kończy działanie. Pamięć zostaje wyczyszczona.

Ten „stworzony by umrzeć” cykl życia oznacza, że wycieki pamięci są niemal niemożliwe do utrzymania. Niedbały skrypt może zaszkodzić tylko sobie. Nie może destabilizować serwera.

Ta odporność sprawia, że PHP jest idealne do środowisk shared hosting oraz masowych wdrożeń, gdzie niezawodność jest ważniejsza niż surowa prędkość.

3. Wdrożenie Jest Natychmiastowe, Ponieważ Nie Ma Kroku Budowania

Nowoczesne ścieżki wdrożenia są złożone. Aby uruchomić aplikację JavaScript, możesz potrzebować kroku kompilacji (Webpack/Vite), rejestru kontenerów (Docker), usługi orkiestracji (Kubernetes) i odwrotnego serwera proxy (NGINX).

Ale wdrażanie PHP pozostaje dziś przyjemnie prymitywne. Kopiujesz plik na serwer, to wszystko.

Ponieważ serwery traktują pliki PHP jako zasoby wykonywalne, a nie skompilowane aplikacje, krok „kompilacji” często nie istnieje. Zmieniasz linię kodu, zapisujesz plik i zmiana jest od razu aktywna.

Pętla zwrotna jest uzależniająca. Umożliwia szybką iterację, z którą skompilowane języki nie mogą się równać.

4. Obszerna Biblioteka Standardowa Zapobiega „Piekle Zależności”

W ekosystemie JavaScript, proste zadania wymagają zewnętrznych pakietów.

Sformatować datę? Zainstaluj bibliotekę.

Przetwarzasz formularz? Zainstaluj middleware.

To jest piekło zależności.

Schemat komiksowy XKCD pokazujący zawiłe narzędzia, biblioteki, aktualizacje i hacki, ilustrujący utrzymanie złożonego stosu technologicznego.

PHP przyjmuje filozofię „wszystko w jednym”. Biblioteka standardowa zawiera natywne wsparcie dla połączeń z bazami danych, analizy JSON, manipulacji plikami, przetwarzania obrazów oraz transmisji e-mail.

Programiści PHP mogą tworzyć skomplikowane aplikacje z niemal zerowymi zewnętrznymi zależnościami. Dzięki temu podejściu, kod napisany w czystym PHP w wersji PHP 7 działa tak samo dobrze jak dzisiaj. Wynika to z faktu, że wszystkie zależności są aktualizowane wraz z językiem i nie ma łańcucha opuszczonych pakietów stron trzecich.

5. Przywiązuje Większą Wagę Do Dostarczania Działającego Kodu Niż Do Czystości

PHP nigdy nie udawało, że jest akademickie. Nigdy nie twierdziło, że jest „najmądrzejszym” językiem w pokoju. PHP ustawiło się jako język do załatwiania spraw.

To przyciągnęło specyficznego rodzaju programistę: pragmatyka. Freelancera, który tworzy sklep dla lokalnej piekarni w tydzień. Agencję, która dostarcza dziesięć stron miesięcznie. Startup, który weryfikuje pomysł, zanim skończą się środki.

Tym programistom nie zależy na monadach czy wskaźnikach pamięci. Muszą szybko dostarczać działające oprogramowanie. A ponieważ mogli dostarczać, zarabiali pieniądze. A ponieważ zarabiali pieniądze, nadal używali PHP.

Techniczne Ulepszenia We Współczesnym PHP

Samo „zrobienie tego” nie wystarczy, jeśli narzędzie jest wolne lub niebezpieczne.

Podczas gdy stare skargi na wydajność były uzasadnione w 2015 roku, nowoczesne wersje rozwiązały problemy takie jak niespójne nazewnictwo funkcji, słaba wydajność i luki w zabezpieczeniach, które uczyniły z PHP mem.

1. Statyczne Typowanie Jest Teraz Opcją

PHP miało luźne typowanie. Starało się być zbyt pomocne, automatycznie konwertując stringi na liczby lub wartości null na zera, co prowadziło do nieśledzalnych błędów.

Nowoczesny PHP (8.0+) umożliwia dynamiczne typowanie, co oznacza, że język decyduje, jakiego typu powinna być zmienna na podstawie tego, jak jest używana. Daje to również wolność wyboru między ścisłym a luźnym typowaniem dla tych, którzy chcą świadomie wybrać jedną z tych opcji. Dzięki właściwościom typowanym, typom unii i deklaracjom typu zwracanego, deweloperzy mogą egzekwować integralność danych równie rygorystycznie jak w Java lub C#.

Już nie musisz zgadywać, co zwraca funkcja.

2. Prędkość Znacząco Się Poprawiła

Przez lata programiści akceptowali fakt, że PHP jest wolne. Ten kompromis zakończył się wraz z PHP 7.

Zespół przepisał Zend Engine dla lepszego zarządzania pamięcią. Testy z Phoronix pokazały, że PHP 7 obsługiwało dwa razy więcej żądań na sekundę niż PHP 5.6.

Wykres słupkowy testów Phoronix porównujący wersje PHP, pokazujący duże zyski wydajności od PHP 5.x do PHP 7.1 przy niższych czasach wykonania.

PHP 8 wprowadziło kompilator JIT (Just In Time), który przewyższa Pythona i Ruby w standardowych zadaniach webowych. Chociaż nie dorównuje językom systemowym takim jak Rust czy C pod względem surowych obliczeń, stało się szybsze niż zapytania do bazy danych, na które zazwyczaj czeka.

3. Niebezpieczne Domyślne Ustawienia Zostały Usunięte

Na początku lat 2000, tutoriale PHP uczyły złych nawyków. Pokazywały programistom ręczne sanitowanie danych wejściowych za pomocą nieporęcznych funkcji, takich jak mysql_real_escape_string. To doprowadziło do epidemii ataków SQL injection w połowie lat 2000.

PHP 7 podjęło odważny krok, aby zerwać zgodność wsteczną, usuwając całkowicie stare funkcje mysql_. Jeśli spróbujesz uruchomić ten niezabezpieczony kod dzisiaj, aplikacja się zawiesi.

Współczesne programowanie w PHP opiera się domyślnie na PDO (PHP Data Objects) i przygotowanych instrukcjach. Oddziela to dane od zapytania przed dotarciem do bazy danych, co domyślnie uniemożliwia typowe ataki. Teraz musisz się naprawdę postarać, aby napisać niebezpieczny kod.

Jakie Są Zagrożenia Dla PHP?

Jeśli lepsze języki, szybsze środowiska wykonawcze i kpiny nie mogły zabić PHP, to co może?

Nie zostanie zastąpiony przez „lepszą” wersję siebie. Zostanie zastąpiony tylko wtedy, gdy podstawowa architektura sieci zmieni się w kierunku, w którym PHP już nie będzie pasować.

Zespoły Korzystają Z Używania Jednego Języka

Zmiana kontekstu jest kosztowna. Najmocniejszym argumentem przeciwko PHP obecnie nie jest składnia, ale efektywność uniwersalnego JavaScriptu.

Kiedy zespół jednoczy się wokół Node.js, eliminuje się tarcie wynikające z utrzymywania dwóch oddzielnych grup programistów. Przestajesz mieć „ludzi od PHP” i „ludzi od Reacta”, a po prostu masz inżynierów.

Użytkownik Reddit, kavacska, wyjaśnia logikę biznesową:

„Jednym z najważniejszych zasobów w projekcie są ludzie, którzy całkowicie rozumieją całą bazę kodu. Gdy zaczynasz fragmentować swoje oprogramowanie różnymi językami, musisz radzić sobie z dodatkowym planowaniem i komunikacją. Ma to sens, aby używać tego samego języka do wszystkiego, więc deweloperzy frontendowi nie będą musieli uczyć się nowego języka, aby pracować nad backendem.”

Firmy mogą zatrudniać programistów JavaScript pracujących na całym stosie technologicznym. Ta efektywność to najsilniejszy argument przeciwko PHP. W miarę jak logika frontendu staje się bardziej skomplikowana, rośnie tendencja do używania tego samego języka na serwerze.

Nie Zostało Zbudowane dla Bezserwerowej Architektury

PHP opiera się na architekturze „shared-nothing”. Każde żądanie uruchamia nowy proces, który umiera natychmiast po zakończeniu. Ta konstrukcja przeczy nowoczesnym zasadom serwerless.

Platformy serverless preferują aplikacje, które są stale aktywne i dzielą się stanem między żądaniami. PHP wymusza restart środowiska wykonawczego za każdym razem.

Użytkownik Reddit, donatj podkreśla techniczne trudności:

„Dużą, prostą zaletą Go jest stan między żądaniami. W standardowych konfiguracjach serwerów, każde żądanie obsługiwane przez PHP jest inicjowane od zera i musi pobierać swój stan z sesji, serwerów pamięci podręcznej i baz danych.”

Chociaż istnieją narzędzia takie jak Bref, narzucają one trwały model na język, który został stworzony do zakończenia działania. Rdzenne języki serwerless radzą sobie z tym naturalnie. PHP wymaga manipulacji środowiska wykonawczego, aby unikać opóźnień.

Jeśli sieć przejdzie całkowicie na funkcje bezserwerowe sterowane zdarzeniami, PHP będzie wymagało kompleksowej przebudowy lub ryzykuje staniem się nieistotnym.

Ekosystem SI opiera się na Pythonie

Największym zagrożeniem dla PHP jest to, że następna dekada sieci jest pisana w Pythonie.

Python jest standardem dla rozwoju SI. Ponieważ ciężka praca odbywa się tam, cały ekosystem narzędziowy skupia się wokół niego.

Użytkownik Reddit, tei187, wyjaśnia:

„Python jest wyborem numer jeden, gdy mowa o rozwoju SI… ludzie, którzy zaczęli od AI [rozwoju], oparli swoje standardy, procesy i środowisko wokół Pythona. Ekwilwalentny zespół osób byłby wymagany, aby zrobić to samo w PHP, aby ten język był realną opcją.”

Jeśli twoja aplikacja staje się wrapperem dla agentów SI, uruchomienie serwera PHP, który ciągle wywołuje mikrousługi Pythona, dodaje złożoności. Czysty stos Pythona unika całkowicie tej latencji API.

PHP Pozostaje Bezpieczny Długo Po Zakończeniu Oficjalnego Wsparcia

Długowieczność PHP nie jest przypadkowa. Jest wspierana przez intuicyjny ekosystem utrzymania, zaprojektowany, aby utrzymać stabilność stron internetowych, gdy firmy rozwijają się we własnym tempie.

Dla większości stron internetowych, aktualizacja PHP to nie jest decyzja jednego kliknięcia. Wymaga testowania motywów, wtyczek, integracji, a nawet niestandardowego kodu, przy jednoczesnym utrzymaniu stron w trybie online i bezpiecznym. Wiele firm hostingowych reaguje na tę złożoność, wymuszając aktualizacje, jak tylko oficjalne wsparcie dla PHP się kończy.

DreamHost podchodzi do sprawy inaczej. Jako jeden z niewielu niezależnych dostawców hostingu, nie musimy odpowiadać przed inwestorami domagającymi się wzrostu kwartalnego.

Oferujemy Rozszerzone wsparcie dla PHP, usługę zaprojektowaną, aby zapewnić bezpieczeństwo starszym wersjom PHP po ich oficjalnym zakończeniu wsparcia. Daje to klientom czas, którego potrzebują do zaplanowania, przetestowania i odpowiedzialnej aktualizacji.

Kiedy wersja PHP osiąga koniec wsparcia, nasz zespół inżynieryjny nadal ją utrzymuje poprzez:

  • Bieżące utrzymanie bezpieczeństwa dla starszych wersji PHP
  • Zapewnianie ciągłej kompatybilności z popularnymi platformami internetowymi
  • Ochrona działających stron przed pojawiającymi się zagrożeniami bez konieczności natychmiastowych aktualizacji
  • Dawanie klientom czasu na odpowiedzialne planowanie i testowanie aktualizacji

Ta praca pozwala stronom działającym na wersjach od 5.6 do 8.1 pozostać chronionym, podczas gdy aktualizacje są wdrażane zgodnie z harmonogramem, który ma sens dla biznesu.

Rozszerzone wsparcie dla PHP odzwierciedla podstawową rzeczywistość sieci: stabilność ma znaczenie.

Oprogramowanie nie musi być przepisywane za każdym razem, gdy wydawana jest nowa wersja. Wystarczy, że będzie bezpieczne, przewidywalne i dobrze wspierane.

Z każdą nową wersją oprogramowania PHP pozostaje konsekwentne, potwierdzając swoją niezawodność i stabilność.

To jest to, co pozwala milionom stron opartych na PHP działać płynnie i co umożliwia klientom modernizację bez zakłóceń.

Jaki Jest Werdykt?

PHP nie podąża za trendami i to właśnie dlatego przetrwał.

Internet nie jest zbudowany na nowościach. Opiera się na technologiach, które równoważą wydajność, bezpieczeństwo i koszty, jednocześnie wspierając realne biznesy na dużą skalę. PHP od dziesięcioleci dyskretnie udoskonala tę równowagę.

Prawie trzy czwarte sieci nadal działa na PHP nie dlatego, że firmy są uwięzione, ale dlatego, że przepisywanie stabilnego, dochodowego oprogramowania nie ma sensu. Co ma sens, to niezawodność, przewidywalne zachowanie i praktyczność oraz ekosystem, który wspiera zmiany, nie wymuszając ich.

Dopóki sieć opiera się na HTML, bazach danych i serwerach odpowiadających na żądania, PHP pozostaje naturalnym rozwiązaniem. PHP ewoluowało tam, gdzie to było ważne, pozostało proste tam, gdzie to się liczy, i udowodniło, że długowieczność to nie wada, ale zaleta!

PHP nie umarło, jest podstawowe.

Hosting WordPress

Niezrównany Hosting WordPress

Niezawodne, błyskawiczne rozwiązania hostingowe, specjalnie zoptymalizowane dla WordPressa.

Zobacz więcej

John jest Dyrektorem Produktu (WordPress) w DreamHost. Odpowiada za ustalanie planu działania i wizji produktu, współpracę z klientami w celu zrozumienia ich wyzwań i pomocy w ich pokonywaniu, a także współpracę z wieloma zespołami nad wdrażaniem i promowaniem funkcji oraz poprawek, które optymalizują tworzenie i zarządzanie stronami WordPress. Obserwuj Johna na LinkedIn: https://www.linkedin.com/in/john-robison-77907330/