• Czas czytania ~8 min
  • 11.02.2024

PHP 8.3 jest najnowsza wersja PHP. Ma ekscytujące nowe funkcje i znaczną poprawę wydajności. Aktualizując do wersji 8.3, możesz osiągnąć znaczny wzrost szybkości. W tym artykule zagłębimy się w to, jak PHP 8.3 może zmienić zasady gry. Może przyspieszyć działanie aplikacji.

Co nowego w PHP 8.3?

Bezpośrednie ulepszenia

wydajności PHP 8.3 wprowadza optymalizacje, które zwiększają wydajność środowiska uruchomieniowego aplikacji. Ten wzrost wydajności to coś więcej niż małe ulepszenie. Jest to znaczące ulepszenie silnika PHP. Prowadzi to do szybszej realizacji i zużywa mniej zasobów.

Kilka kluczowych ulepszeń zapewnia ten wzrost.

Kompilator Just-In-Time (JIT) został dodatkowo zoptymalizowany pod kątem lepszej wydajności. Wykonywanie skryptów jest szybsze i zużywa mniej czasu procesora. Jest to szczególnie korzystne w przypadku zadań wymagających dużej ilości zasobów.

PHP udoskonalił sposób obsługi kodów operacji (instrukcje w kodzie bajtowym PHP). Wersja 8.3 używa bardziej wydajnych sposobów interpretowania i wykonywania tych kodów operacji. Skraca to czas wykonywania skryptów.

PHP 8.3 ulepsza mechanizm odśmiecania pamięci, który odpowiada za zwalnianie pamięci zajmowanej przez nieużywane obiekty. Powoduje to bardziej efektywne wykorzystanie pamięci i może znacznie poprawić wydajność aplikacji intensywnie korzystających z pamięci.

Inne ulepszenia obejmują optymalizacje obsługi tablic i ulepszony system typów. Wstępne ładowanie uaktualnień pozwala administratorom serwera załadować i skompilować kod PHP do pamięci zaraz po uruchomieniu serwera. Zmniejsza to obciążenie związane z kompilowaniem skryptów przy każdym żądaniu. Prowadzi to do szybszego czasu reakcji.

Te aktualizacje oznaczają, że istniejący kod PHP będzie działał szybciej i zużywa mniej zasobów w PHP 8.3. Wszystko to bez wprowadzania jakichkolwiek zmian w kodzie!

PHP

8.3 poprawia również składnię, metody i bezpieczeństwo typów. Te nowe funkcje pośrednio zwiększają wydajność. Zmniejszają liczbę błędów produkcyjnych i zwiększają wydajność programisty. Pozwala to na szybsze dostarczanie aktualizacji i skuteczniejsze rozwiązywanie problemów z wydajnością.

Niektóre kluczowe ulepszenia obejmują

  • Głębokie klonowanie właściwości tylko do odczytu: PHP 8.3 Włącza jednokrotną modyfikację właściwości tylko do odczytu za pomocą __clone metody. Pozwala to na głębokie klonowanie tych właściwości. Ale pierwotna właściwość pozostaje niezmienna.
  • Ulepszenia losowości:Rozszerzenie Random doczekało się dalszych ulepszeń w PHP 8.3. Warto zauważyć, że klasa Randomizer widzi dodanie getBytesFromString() metody. Ta metoda generuje losowe ciągi z danego zestawu znaków. Ponadto klasa zawiera getFloat() teraz metody and nextFloat() . Generują one losowe wartości zmiennoprzecinkowe.
  • Dynamiczne pobieranie stałych klas i składowych wyliczenia. Dynamiczne pobieranie upraszcza pobieranie stałych klas i składowych wyliczenia. Robi to za pomocą nazw zmiennych. To sprawia, że składnia jest prostsza niż w poprzednich wersjach.
  • W PHP 8.3 unserialize() zawsze wyemituje E_WARNING w przypadku napotkania problemów. Usprawnia unserialize() to obsługę błędów. W poprzednich wersjach czasami emitował E_NOTICEplik .
  • PHP 8.3 wprowadza kilka zmian do range() funkcji. Zawiera nowe zachowania błędów i ostrzeżeń dla niektórych typów danych wejściowych.
  • W wersji 8.3 dodano dwie nowe dyrektywy ini do wykrywania przepełnienia stosu. Są zend.max_allowed_stack_size i zend.reserved_stack_size. Ma to na celu ułatwienie debugowania poprzez zapobieganie błędom segmentacji spowodowanym przepełnieniem stosu.

Pełną listę nowych funkcji można znaleźć w informacjach o wersji.

Jak przyspieszyć działanie aplikacji za pomocą PHP 8.3 Zaktualizuj swoją wersję PHP do 8.3 Pierwszym krokiem do wykorzystania mocy PHP 8.3 jest aktualizacja obecnego środowiska PHP do wersji 8.3

. To uaktualnienie ma kluczowe znaczenie dla uzyskania dostępu do nowych funkcji i ulepszeń wydajności. Aktualizując do wersji 8.3, możesz cieszyć się wzrostem wydajności nawet o 42%, w zależności od stosu.

Aby uzyskać wskazówki dotyczące uaktualniania, zapoznaj się z oficjalnym przewodnikiem migracji. Należy pamiętać o wszelkich zmianach powodujących niezgodność, które mogą mieć zastosowanie do aplikacji.

Korzystaj z nowych funkcji, aby szybciej

kompilować i dostarczać Nowe funkcje bezpieczeństwa składni i typów mogą znacznie poprawić środowisko deweloperskie. Zwiększa to wydajność, ponieważ programiści mogą szybko identyfikować i rozwiązywać problemy z wydajnością. Oto kilka przykładów wykorzystania nowych funkcji w celu przyspieszenia cyklu programowania.

Przykład 1: Używanie wpisanych

stałych klasWpisane stałe klas zapewniają, że kod poprawnie używa stałych w całej aplikacji. Ta funkcja może zapobiec błędom w czasie wykonywania. Jest to szczególnie przydatne w krytycznych obszarach, takich jak buforowanie. W rezultacie sprawia, że Twoja aplikacja jest bardziej stabilna i szybsza.

class CacheSettings {
    public const int MAX_LIFETIME = 3600; // Typed as integer
    // ... other constants
}
// Usage
$cacheLifetime = CacheSettings::MAX_LIFETIME;

Przykład 2: Zapewnianie poprawnych przesłonięć metody za pomocą #[\Override]

class BaseClass {
    public function compute() {
        // Base implementation
    }
}
class ChildClass extends BaseClass {
    #[\Override]
    public function compute() {
        // Correctly overridden method
    }
}

W PHP 8.3 atrybut #[\Override] stosuje się do metod klas podrzędnych. Gwarantuje to, że compute() metoda w nadpisuje swojego rodzica w BaseClassChildClass programie . Zapobiega to błędom i utrzymuje integralność wydajności w złożonych hierarchiach klas.

Przykład 3: Ulepszona obsługa

try {
    // Code that may throw an exception
} catch (FirstException | SecondException $e) {
    // Handle multiple exceptions
}

błędówPHP 8.3 potrafi wychwycić wiele wyjątków w jednym bloku. Usprawnia obsługę błędów, oszczędzając czas i zmniejszając złożoność kodu.

Przykład 4: Rozszerzona obsługa

function addNumbers(int|float $a, int|float $b): int|float {
    return $a + $b;
}

typówPHP 8.3 rozszerza swój system typów poprzez wprowadzenie rozszerzonej obsługi typów. Rozszerzona obsługa typów obejmuje używanie typów unii w sygnaturach funkcji. Powyższy kod demonstruje tę funkcję. Umożliwia zmiennym i typom zwracanym akceptowanie wielu typów. W tym przypadku parametry i wartość zwracana mogą być liczbami całkowitymi lub zmiennoprzecinkowymi. Zapewnia to większą elastyczność i precyzję. To ulepszenie prowadzi do bardziej przejrzystego, samodokumentującego się kodu, zmniejszając liczbę usterek związanych z typami. PHP 8.3 pozwala na bardziej precyzyjne i elastyczne definiowanie funkcji. Zwiększa to niezawodność i wszechstronność kodu. Pomaga również we wczesnym wykrywaniu błędów związanych z typem. Przyczynia się to do stabilności i wydajności aplikacji.

Przykład 5: Uproszczenie walidacji JSON W PHP 8.3 nowa funkcja json_validate() upraszcza walidację

danych JSON. Wcześniej programiści musieli polegać na niestandardowej logice walidacji lub bibliotekach zewnętrznych. Było to czasochłonne i podatne na błędy. Teraz użyj json_validate(), aby sprawdzić format i strukturę ciągów JSON. Jest to wywołanie pojedynczej funkcji. Ta funkcja usprawnia obsługę danych JSON. Jest to szczególnie przydatne w aplikacjach, które często używają formatu JSON, takich jak interfejsy API. Zmniejsza złożoność i poprawia niezawodność kodu.

Poprzednie wersje PHP:

function json_validate(string $string): bool {
    json_decode($string);

    return json_last_error() === JSON_ERROR_NONE;
}
var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true

PHP 8.3:

var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true

Ogólne ulepszenia

wydajności PHP Możesz jeszcze bardziej zwiększyć wydajność swoich aplikacji, korzystając z następujących strategii. Te strategie optymalizują inne warstwy stosu aplikacji. Zapewniają kompleksowe podejście do poprawy wydajności.

Strategie

buforowania Implementacja strategii buforowania ma kluczowe znaczenie dla zmniejszenia obciążenia serwera. Przyspiesza również czas reakcji.

  • Opcode Caching może znacznie skrócić czas kompilacji PHP. Użyj OPcache i podobnych narzędzi do przechowywania prekompilowanego kodu bajtowego skryptu. Oznacza to, że PHP nie musi rekompilować skryptu za każdym razem, gdy jest on żądany.
  • Buforowanie obiektów przyspiesza dostęp do danych. Czyni to, przechowując często używane obiekty danych w pamięci. Narzędzia takie jak Redis lub Memcached mogą to zrobić. Zmniejsza to konieczność pobierania danych z bazy danych przy każdym żądaniu, co jest czasochłonne.

Przejście na protokół HTTP/2 Protokół HTTP/2

wprowadza wiele ulepszeń w stosunku do protokołu HTTP/1.1, w szczególności:

  • Multipleksowanie umożliwia pojedynczemu połączeniu przenoszenie wielu żądań i odpowiedzi klient-serwer. Zmniejsza to opóźnienie spowodowane przez kilka połączeń TCP.
  • Wypychanie serwera umożliwia serwerom proaktywne wysyłanie zasobów do klienta. Skraca to czas oczekiwania na późniejsze żądania.

Optymalizacja zapytań do bazy danych i interakcji z bazą danych kodu

jest często wąskim gardłem w aplikacjach internetowych. Ich optymalizacja może przynieść znaczny wzrost wydajności.

  • Indeksowanie: Upewnij się, że tabele bazy danych są prawidłowo indeksowane. Indeksy mogą znacznie przyspieszyć czas pobierania danych.
  • Optymalizacja zapytań: Regularnie analizuj i optymalizuj zapytania SQL. Unikaj niepotrzebnego pobierania danych i skomplikowanych sprzężeń, gdy dostępne są prostsze alternatywy.
  • Profilowanie kodu: użyj narzędzi profilowania, aby zidentyfikować nieefektywny kod PHP. Narzędzia takie jak Xdebug mogą pomóc w określeniu powolnych funkcji i pętli w kodzie.

Skupiając się na tych obszarach, możesz znacznie ulepszyć swoje aplikacje PHP. Ale możesz się zastanawiać: "jak w ogóle dowiedzieć się, gdzie są wąskie gardła?" W tym miejscu pojawia się monitorowanie wydajności aplikacji (APM)!

Dlaczego APM mogą pomóc w osiągnięciu "lepszej" aplikacji Narzędzia do monitorowania wydajności aplikacji (APM) oferują bezcenny wgląd w wydajność aplikacji

.

Monitorowanie w czasie rzeczywistym.

Monitorowanie w czasie rzeczywistym w narzędziach APM może pomóc w przyspieszeniu aplikacji PHP. Polega na ciągłej obserwacji i analizie wskaźników wydajności aplikacji.

This process includes tracking critical metrics. These metrics are response times, memory usage, server load, and database query efficiency. These metrics allow quick identification of performance bottlenecks. Performance bottlenecks are parts of the application where performance is poor. By detecting these issues in real-time, you can rapidly diagnose and address them. This reduces downtime and enhances user experience.

Przykładem narzędzia APM, które zapewnia tę możliwość, jest Scout APM. W szczególności oferuje monitorowanie aplikacji PHP w czasie rzeczywistym. Scout umożliwia programistom identyfikowanie i rozwiązywanie problemów związanych z wydajnością w miarę ich pojawiania się.

Szczegółowe informacje o śledzeniu Szczegółowe informacje

Szczegółowe informacje o śledzeniu Szczegółowe informacje are a crucial feature in APM tools. They provide in-depth application analysis.

Ta funkcja zapewnia szczegółowy wgląd w wykonywanie określonych żądań lub transakcji. Pozwala prześledzić drogę żądania od początku do końca. Dzieli proces na poszczególne komponenty i operacje. Szczegóły ujawniają dokładny wiersz kodu lub zapytanie do bazy danych powodujące problemy z wydajnością.

Dzięki tym informacjom APM umożliwiają programistom identyfikowanie i naprawianie nieefektywności lub błędów. Umożliwia precyzyjne dostosowanie aplikacji w celu uzyskania optymalnej wydajności.

PHP

8.3 to nie tylko kolejna aktualizacja; to transformacyjna zmiana w sposobie, w jaki PHP zasila aplikacje internetowe. Powinieneś przyjąć PHP 8.3 i postępować zgodnie ze wskazówkami dotyczącymi poprawy wydajności opisanymi tutaj. Dzięki temu aplikacja będzie działać szybciej i wydajniej. Ponadto Twoi użytkownicy będą cieszyć się doskonałym doświadczeniem użytkownika. Na koniec zintegruj narzędzia APM, takie jak Scout APM, ze swoim przepływem pracy. Narzędzia APM jeszcze bardziej usprawnią proces programowania i poprawią wydajność aplikacji.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297