PHP — скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений. Применяется для создания динамических веб-сайтов.
В своё время выход PHP 5 был знаковым событием, в его основе использовалась новая объектная модель Zend 2.0, которая рано или поздно должна была появится из-за несовершенства Zend 1.0, а также более ранних версий PHP, нерационально использовавших память, поскольку объекты обрабатывались как примитивные типы (переменные, списки), то есть посредством копирования.
В новой объектной модели, которая используется в Zend 2.0 используется технология объектных дескрипторов, напоминающая аналогичную технологию в Java. Теперь объекты доступны только через дескрипторы, позволяя экономить память и получать полный контроль над созданием и дублированием объектов.
Zend Engine 2 использует новый менеджер памяти. Два главных его преимущества:
- Улучшенная поддержка многопоточных сред (распределенные блоки не нуждаются во взаимных исключительных блокировках)
- Более эффективный механизм освобождения распределенных блоков памяти.
Изменение коснулись производительности встроенных функций PHP. По различным оценкам, увеличение производительности достигает 40%.
Также отметим такие изменения, как новые механизмы работы с потоками, улучшенная поддержка XML и появление новых функциий.
Время шло, разработчики нуждались в новых возможностях.
Так появился PHP 6 с поддержкой Unicode, планы были огромны, проект был амбициозен и от того крайне сложен, что и сыграла с ним злую шутку.
Проблем с ним было много, поэтому решели перейти к разработке новой версии.
PHP 7
Место Zend Engine занял PHPNG, который увеличил скорость обработки скриптов практически вдвое по сравнению с PHP 5.
Рефакторинг внутренних структур данных и добавление дополнительного этапа перед компиляцией кода в виде абстрактного синтаксического дерева — Abstract Syntax Tree (AST), привели к превосходной производительности и более эффективному распределению памяти.
В PHP 7 был убран устаревший код, появилось место для новых возможностей и будущих улучшений в области эффективности.
Несмотря на частичную потерю обратной совместимости с предыдущими версиями, большинство возникающих проблем легко решаемы.
Библиотеки и фреймворки мигрируют на новую версию, что приводит к появлению их новых версий.
Tuesday, June 16, 2020