Выпуск 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.