За обновлениями можно следить в telegram-канале https://t.me/quasiart

Выпуск PHP 7.0.0 состоялся ещё в декабре 2015 года, но вопрос перехода на эту версию до сих пор волнует умы прогрессивной молодёжи. И не мудрено, ведь каждый значительный выпуск PHP несёт в себе множество полезных нововведений.

Зачем обновляться?

  • Одним из важнейших для меня и, наверное, для большинства web-разработчиков, изменений является рост производительности, сравнимое с производительностью HHVM. Как я писал ранее про оптимизацию скорости сайтов, смена версии PHP с 5.3 на 5.6 дала прирост скорости в 2 раза. Примерно такая же разница между версиями 5.6 и 7. Конечно, это не повод пренебрегать качеством кода, ведь, если считать в среднем по больнице, никакой самый быстрый компьютер не решит проблему плохого кода.
  • Расширения ereg и mysql полностью удалены, тогда как в предыдущих выпусках они были объявлены устаревшими. Прошло достаточно времени для того, чтобы проекты, отношение разработчиков к которым небезразлично, перестали от них зависеть и стали использовать хотя бы preg и mysqli. То же самое касается нескольких функций. Подробнее об устаревшем и удалённом в PHP 7 можно узнать на официальной wiki-документации .
  • Добавлены некоторые нововведения в синтаксис: строгая типизация, null-коалесцентный оператор, анонимные классы и многое другое. Но они навряд ли скоро появятся в проектах, рассчитанных на широкую массу, ввиду оглядки на обратную совместимость (например, CMS или фреймворки).

Производительность

В сети можно встретить множество синтетических и реальных тестов производительности разных версий PHP и HHVM, которые говорят только об одном — с каждой версией PHP веб становится быстрее и быстрее. Большинство же моих проектов работают на MODX Revolution и CodeIgniter 3. И, естественно, мне было любопытно узнать, что изменится после смены версии PHP.

MODX Evolution

Конечно, я бы мог проверить изменение производительности и для MODX Evolution, но в этой системе очень много кода, зависящего от, как я написал выше, удалённых расширений PHP. Однако, в версии MODX Evolution 1.1RC , подготовленной пользователем dmi3yy , появилась полная поддержка PHP 7.

MODX Revolution

Итак, я взял несколько сайтов, работающих на PHP 5.6. Измеряю я обычно количество запросов и время на генерацию страницы. Логично предположить, что количество запросов мало коррелирует с версией PHP, но лишним добавить и эту информацию не будет. Начиная с версии MODX Revolution 2.5 реализована полная совместимость с PHP 7. До этого была лишь частичная поддержка PHP 7, ввиду чего у меня не работала админка, хотя сам сайт отлично работал.

Сайт №1

Версия PHP Кэширование Запросов Время, с
5.6 156 1.18
5.6 17 0.25
7 161 0.43
7 17 0.02

Сайт №2

PHP 5.6, без кэширования — 166 запросов, 0.66 с.

PHP 5.6, с кэшированием — 3 запроса, 0.06 с.

PHP 7, без кэширования — 166 запросов 0.34 с.

PHP 7, с кэшированием — 3 запроса, 0.04 с.

Сайт №3

PHP 5.6, без кэширования — 177 запросов, 1.82 с.

PHP 5.6, с кэшированием — 10 запросов, 0.39 с.

PHP 7, без кэширования — 177 запросов, 0.51 с.

PHP 7, с кэшированием — 10 запросов, 0.18 с.

Как видно, переключение версии PHP на последнюю положительно сказалось на производительности сайтов, увеличив её в 1.5-3 раза, а кое-где (например, на главной странице моего сайта) даже в 10 раз.

CodeIgniter 3

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

Синтаксис

Синтаксис претерпел некоторые изменения, которые повлияют на обратную совместимость. Помимо официальной документации советую изучить примеры кода на GitHub, например, эти: https://github.com/afym/php-7-examples .

Кому не стоит обновляться

Не стоит обновляться тем, чьи проекты основаны на расширениях, удалённых в новом PHP. Также стоит поискать в интернете информацию о незначительных изменениях синтаксиса, так как есть моменты, нарушающие обратную совместимость. Конечно, таких случаев один на тысячу, если не реже, но лучше перестраховаться.

Хостинг-провайдеры

Выпуск PHP 7 состоялся относительно недавно, поэтому не все хостинг-провайдеры дают возможность опробовать новинку. Например, beget уже позволяет порадоваться скоростью, а в timeweb, наверное, считают PHP 7 недостаточно стабильным.

Чужой опыт

Вывод

За переход на последнюю версию PHP больше «За», чем «Против». Поэтому, если вам охота лёгкой оптимизации, обновляйте PHP.