PHP 7.2 доступен на всех тарифных планах виртуального хостинга

Как и прежде, мы делаем упор на развитие технологий, а также на оптимизацию и стабильность работы используемых технологий.

На этот раз мы обновили PHP до последней стабильной версии 7.2 и хотим рассказать об изменениях. Конечно, по сравнению с версией 7.1 изменений не так много.

На первом месте стоят улучшения связанные с производительностью

С каждым обновлением, PHP становится всё стабильнее, экономичнее в использовании памяти и быстрее. Очередное обновление содержит несколько изменений, благодаря которым новая версия PHP 7.2 немного быстрее чем PHP 7.1.

Список изменений новой версии содержит следующие оптимизации производительности:

  • В Opcache добавлена глобальная оптимизация на основе анализа потока данных с использованием SSA (Static single assignment form): Sparse Conditional Constant Propagation (SCCP), удаление мертвого кода (Dead Code Elimination — DCE) и удаление неиспользуемых локальных переменных.
  • Оптимизирована работа встроенной функции in_array() с помощью поиска хеша в перевернутом массиве.

Обновления

  • Добавлено новое криптографическое расширение Sodium. Был принят RFC: Make Libsodium a Core Extension, в котором предлагалось включить в ядро PHP библиотеку Libsodium, предоставляющую аутентифицированное шифрование, высокоскоростную эллиптическую криптографию и многое другое.
  • В функции json_encode и json_decode добавлены опции JSON_INVALID_UTF8_IGNORE и JSON_INVALID_UTF8_SUBSTITUTE для игнорирования или замены некорректных последовательностей байтов UTF-8.
  • Расширения теперь разрешено загружать в ini файлах по имени (extension=).
  • Расширение mcrypt, объявленное устаревшим в PHP 7.1, было перемещено в PECL.
  • Минимальные поддерживаемые версии Windows повышены до Windows 7 / Server 2008 R2

Устаревшие функции

  • __autoload — данная магическая функция была заменена на spl_autoload_register в PHP 5.1, и теперь объявлена устаревшей
  • $php_errormsg — переменная создавалась в локальном скопе при возникновении нефатальной ошибки, если опция track_errors была включена в ini-файле (отключена по умолчанию), и в этом случае ошибка не передавалась в обработчик ошибок.
  • create_function() — функция по сути является тонкой оберткой над eval(), как результат является источником потенциальных угроз безопасности, очень медленная и использует много памяти в работе.
  • mbstring.func_overload — это ini-настройка, позволяющая переопределить часть строковых функций их мультибайтовыми аналогами. Эта функция запрещена в некоторых библиотеках (например Symfony) и может вызывать проблемы при определенных условиях.
  • (unset) cast — данное преобразование обращает результат в null. По сути выражение (unset)$x не несет никакого дополнительного смысла и может запутать, т.к. оно не эквивалентно функции unset($x).
  • parse_str() без второго аргумента — это пережиток времен register_globals. Без передачи второго аргумента, функция присваивает полученные значения локальным переменным, что потенциально может быть небезопасным.
  • gmp_random() — начиная с версии 5.6 появились функции gmp_random_bits() и gmp_random_range(), которые заменяют gmp_ramdom(), но имеют больший контроль над результатом.
  • each() — аналог foreach, но значительно более медленный
  • assert() со строковым аргументом — при передаче строкового значения в assert, над строкой выполняется eval, что является потенциальной угрозой безопасности приложения.
  • Аргумент $errcontext в обработчиках ошибок — ранее в обработчик ошибок, заданный с помощью set_error_handler(), можно было передать $errcontext, содержащий массив всех локальных переменных на момент возникновения ошибки.

В новой версии PHP некоторые старые функции объявляются устаревшими, и начнут выбрасывать deprecated notice:

В общем, список изменений не такой внушительный как при переходе с PHP 5 на PHP 7, но всё-же как можно заметить, тенденция к улучшению производительности сохраняется, что не может радовать.

Далее продемонстрировано как можно включить PHP 7.2 у себя в панели управления хостингом.

Как и раньше, переключение версии осуществляется буквально парой кликов.

В панели управления хостингом перейдите в раздел WWW, далее заходим в подраздел WWW-домены из списка выбираем домен, на которым планируете установить PHP версии 7.2 и нажимаем клавишу Изменить. В появившемся окне в строке Версия PHP из списка выбираем PHP 7.2.2 (alt).

Хостинг с поддержкой PHP 7.2