• Час читання ~2 хв
  • 11.02.2024

PHP 8.3 це остання версія PHP. Він має нові захоплюючі функції та значні покращення продуктивності. Оновившись до 8.3, можна досягти значного приросту швидкості. У цій статті ми зануримося в те, як PHP 8.3 може змінити правила гри. Це може прискорити роботу вашої програми.

Що нового в PHP 8.3?

Direct Performance Enhancements

PHP 8.3 вводить оптимізацію, яка підвищує ефективність виконання ваших додатків. Цей приріст продуктивності є чимось більшим, ніж невеликим оновленням. Це значне покращення движка PHP. Це призводить до швидшого виконання та використовує менше ресурсів.

Кілька ключових удосконалень досягають цього поштовху.

Компілятор Just-In-Time (JIT) був додатково оптимізований для кращої ефективності. Виконання скриптів відбувається швидше і займає менше процесорного часу. Це особливо вигідно для ресурсомістких завдань.

PHP вдосконалив спосіб обробки кодів операцій (інструкції в байт-коді PHP). У версії 8.3 використовуються більш ефективні способи інтерпретації та виконання цих кодів операцій. Це скорочує час виконання скриптів.

PHP 8.3 покращує механізм збору сміття, який відповідає за звільнення пам'яті, зайнятої невикористовуваними об'єктами. Це призводить до більш ефективного використання пам'яті та може значно підвищити продуктивність для додатків з інтенсивним використанням пам'яті.

Інші покращення включають оптимізацію обробки масивів та покращену систему типів. Попереднє завантаження оновлень дозволяє адміністраторам серверів завантажувати та компілювати PHP-код у пам'ять безпосередньо під час запуску сервера. Це зменшує накладні витрати на компіляцію скриптів для кожного запиту. Це призводить до швидшого часу відгуку.

Ці оновлення означають, що ваш існуючий PHP-код працюватиме швидше та використовуватиме менше ресурсів на PHP 8.3. І все це без внесення будь-яких змін до вашого коду!

Непряме підвищення

продуктивності PHP 8.3 також покращує безпеку синтаксису, методів і типів. Ці нові функції опосередковано підвищують продуктивність. Вони зменшують виробничі помилки та підвищують ефективність розробника. Це дозволяє швидше надсилати оновлення та ефективніше вирішувати проблеми з продуктивністю.

Деякі ключові вдосконалення включають

  • Глибоке клонування властивостей, доступних лише для читання: PHP 8.3 Дозволяє одноразово модифікувати властивості тільки для читання за допомогою методу __clone . Це дозволяє проводити глибоке клонування цих властивостей. Але первісна властивість залишається незмінною.
  • Покращення випадковості:Розширення Random бачить подальші покращення в PHP 8.3. Примітно, що клас Randomizer бачить додавання getBytesFromString() методу. Цей метод генерує випадкові рядки із заданого набору символів. Крім того, клас тепер включає методи getFloat() and nextFloat() . Вони генерують випадкові значення з плаваючою комою.
  • Динамічна вибірка констант класу та членів переліку. Динамічна вибірка спрощує отримання констант класу та членів Enum. Він робить це за допомогою імен змінних. Це робить синтаксис простішим, ніж у попередніх версіях.
  • У PHP 8.3 unserialize() завжди видаватиме E_WARNING при виникненні проблем. Це покращує unserialize() обробку помилок. У попередніх версіях він іноді видавав E_NOTICE.
  • PHP 8.3 вносить кілька змін у range() функцію. Він містить нову поведінку помилок і попереджень для певних типів вхідних даних.
  • У версії 8.3 додано дві нові директиви ini для виявлення переповнень стека. Вони є zend.max_allowed_stack_size і zend.reserved_stack_size. Це має на меті полегшити налагодження, запобігаючи помилкам сегментації, спричиненим переповненням стека.

З повним переліком нових функцій можна ознайомитися в примітках до випуску.

Як зробити свій додаток швидшим за допомогою PHP 8.3 Оновіть версію PHP до 8.3 Першим кроком до використання можливостей PHP 8.3 є оновлення поточного середовища PHP до версії 8.3

. Це оновлення має вирішальне значення для доступу до нових функцій і підвищення продуктивності. Оновившись до версії 8.3, ви можете насолоджуватися підвищенням продуктивності до 42%, залежно від вашого стека.

Щоб дізнатися, як оновити систему, перегляньте офіційний посібник із міграції. Пам'ятайте про будь-які незначні зміни, які можуть бути застосовані до вашого додатка.

Використовуйте нові функції для швидшого

створення та розповсюдження Нові функції безпеки синтаксису та типів можуть значно покращити роботу розробника. Це підвищує продуктивність, оскільки розробники можуть швидко виявляти та вирішувати проблеми з продуктивністю. Ось кілька прикладів використання нових функцій для швидшого циклу розробки.

Приклад 1: Використання типізованих констант

класуТипізовані константи класу гарантують, що ваш код правильно використовує константи у вашому додатку. Ця функція може запобігти помилкам під час виконання. Це особливо корисно в таких критичних областях, як кешування. Як наслідок, це робить ваш додаток стабільнішим і швидшим.

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

Приклад 2: Забезпечення правильного перевизначення методу за допомогою #[\Override]

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

У PHP 8.3 ви застосовуєте атрибут #[\Override] до методів дочірніх класів. Це гарантує, що compute() метод in ChildClass має пріоритет над своїм батьківським елементом у BaseClass. Це запобігає помилкам і підтримує цілісність продуктивності в складних ієрархіях класів.

Приклад 3: Удосконалена обробка

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

помилокPHP 8.3 може перехоплювати багато винятків в одному блоці. Це спрощує обробку помилок, заощаджуючи час і зменшуючи складність коду.

Приклад 4: Розширена підтримка

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

типівPHP 8.3 покращує свою систему типів, вводячи розширену підтримку типів. Розширена підтримка типів включає використання типів об'єднання у сигнатурах функцій. Наведений вище код демонструє цю особливість. Він дозволяє змінним і типам, що повертаються, приймати кілька типів. Тут параметри та значення, що повертається, можуть бути як цілими, так і числами з плаваючою комою. Це забезпечує більшу гнучкість і точність. Це вдосконалення призводить до більш чіткого коду, що самодокументується, зменшуючи помилки, пов'язані з типом. PHP 8.3 дозволяє отримати більш точні та гнучкі визначення функцій. Це підвищує надійність та універсальність коду. Це також допомагає ранньому виявленню помилок, пов'язаних з типом. Це сприяє стабільності та ефективності застосування.

Приклад 5: Спрощення перевірки

JSON У PHP 8.3 нова функція json_validate() спрощує перевірку даних JSON. Раніше розробникам доводилося покладатися на кастомну логіку валідації або зовнішні бібліотеки. Це забирало багато часу і призводило до помилок. Тепер ви використовуєте json_validate() для перевірки формату та структури рядків JSON. Це єдиний виклик функції. Ця функція спрощує обробку даних JSON. Це особливо корисно в додатках, які часто використовують JSON, таких як API. Це зменшує складність і підвищує надійність коду.

Попередні версії 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

Загальні підвищення

продуктивності PHP Ви можете ще більше підвищити продуктивність своїх програм, використовуючи наступні стратегії. Ці стратегії оптимізують інші рівні вашого стеку додатків. Вони забезпечують комплексний підхід до підвищення продуктивності.

Стратегії

кешування Реалізація стратегій кешування має вирішальне значення для зменшення навантаження на сервер. Це також прискорює час відповіді.

  • Кешування коду операції може значно скоротити час компіляції PHP. Використовуйте OPcache та подібні інструменти для зберігання попередньо скомпільованого байт-коду сценарію. Це означає, що PHP не потрібно перекомпілювати скрипт щоразу, коли його запитують.
  • Кешування об'єктів прискорює доступ до даних. Він робить це, зберігаючи часто використовувані об'єкти даних у пам'яті. Такі інструменти, як Redis або Memcached , можуть це зробити. Це зменшує потребу отримувати дані з бази даних за кожним запитом, що займає багато часу.

Перехід на HTTP/2 HTTP/2

вносить безліч покращень у порівнянні з HTTP/1.1, зокрема:

  • Мультиплексування дозволяє одному з'єднанню передавати багато запитів і відповідей клієнт-сервер. Це зменшує затримку, спричинену кількома TCP-з'єднаннями.
  • Server Push дозволяє серверам проактивно надсилати ресурси клієнту. Це скорочує час очікування подальших запитів.

Оптимізація запитів до бази даних та взаємодії з базою даних коду

часто є вузьким місцем у веб-додатках. Їх оптимізація може дати значний приріст продуктивності.

  • Індексація: Переконайтеся, що таблиці бази даних належним чином проіндексовані. Індекси можуть значно прискорити час отримання даних.
  • Оптимізація запитів: Регулярно аналізуйте та оптимізуйте свої SQL-запити. Уникайте непотрібного отримання даних і складних з'єднань, коли доступні простіші альтернативи.
  • Профілювання коду: Використовуйте інструменти профілювання, щоб виявити неефективний PHP-код. Такі інструменти, як Xdebug, можуть допомогти точно визначити повільні функції та цикли у вашому коді.

Зосередившись на цих областях, ви можете значно покращити свої програми PHP. Але ви можете задатися питанням: «Як мені дізнатися, де взагалі знаходяться вузькі місця?» Ось де на допомогу приходить моніторинг продуктивності додатків (APM)!

Чому APM можуть допомогти досягти «кращого» Інструменти моніторингу продуктивності додатків

(APM) пропонують безцінну інформацію про продуктивність вашої програми.

Моніторинг у реальному часі.

Моніторинг у реальному часі в інструментах APM може допомогти вам зробити ваш PHP-додаток швидшим. Він передбачає безперервне спостереження та аналіз показників продуктивності програми.

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.

Прикладом інструменту APM, який надає таку можливість, є Scout APM. Він спеціально пропонує моніторинг у реальному часі для програм PHP. Scout дозволяє розробникам виявляти та виправляти проблеми, пов'язані з продуктивністю, у міру їх виникнення.

Детальна статистика трасування Детальна статистика

Детальна статистика трасування Детальна статистика are a crucial feature in APM tools. They provide in-depth application analysis.

Ця функція надає детальне уявлення про виконання конкретних запитів або транзакцій. Він дозволяє простежити шлях запиту від початку до кінця. Він розбиває процес на окремі компоненти та операції. Подробиці розкривають точний рядок коду або запиту до бази даних, що спричиняє проблеми з продуктивністю.

Завдяки цій інформації APM дозволяють розробникам виявляти та виправляти неефективність або помилки. Дозволяє точно налаштувати програму для оптимальної продуктивності.

Висновок

PHP 8.3 - це не просто чергове оновлення, це трансформаційне зрушення в тому, як PHP забезпечує роботу веб-додатків. Ви повинні прийняти PHP 8.3 і дотримуватися порад щодо підвищення продуктивності, викладених тут. Це гарантує, що ваш додаток працюватиме швидше та ефективніше. Крім того, ваші користувачі насолоджуватимуться чудовим користувацьким досвідом. Нарешті, інтегруйте інструменти APM, такі як Scout APM, у свій робочий процес. Інструменти APM ще більше спростять процес розробки та покращать продуктивність вашого додатку.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

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...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297