• Время чтения ~1 мин
  • 11.02.2024

PHP 8.3 - это последняя версия PHP. Он обладает новыми захватывающими функциями и значительными улучшениями производительности. Обновившись до 8.3, можно добиться значительного увеличения скорости. В этой статье мы рассмотрим, как PHP 8.3 может изменить правила игры. Это может повысить производительность вашего приложения.

Что нового в PHP 8.3?

Прямые улучшения

производительности PHP 8.3 представляет оптимизацию, которая повышает эффективность выполнения ваших приложений. Этот прирост производительности — это больше, чем небольшое обновление. Это значительное улучшение в движке PHP. Это приводит к более быстрому выполнению и использует меньше ресурсов.

Несколько ключевых улучшений достигают этого ускорения.

TJIT-компилятор был дополнительно оптимизирован для повышения эффективности. Выполнение скриптов происходит быстрее и потребляет меньше процессорного времени. Это особенно полезно для ресурсоемких задач.

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() . Они генерируют случайные значения с плавающей запятой.
  • Динамическая выборка констант классов и членов перечисления. Динамическая выборка упрощает выборку констант классов и членов перечисления. Для этого используются имена переменных. Это делает синтаксис более простым, чем в предыдущих версиях.
  • В 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-приложения. Но вы можете задаться вопросом: «Как узнать, где находятся узкие места в первую очередь?» Именно здесь на помощь приходит Application Performance Monitoring (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