Bitrix и PHP7 - быстрее, выше, сильнее
В конце 2015 года свет увидел стабильный релиз новой версии языка программирования PHP 7. Платформа 1С-Битрикс начиная с версии 16.5 поддерживает работу на PHP 7.Стоит ли обновлять свои сервера? Какие выгоды несёт нам PHP 7? Об этом и поговорим!
Чем хорош PHP 7 и почему он будет полезен проекту
- Скорость работы. Значительно увеличена скорость работы (~ в 2 раза), при этом на 50% сокращено потребление ресурсов сервера. Наглядная инфографика со сравнением скорости работы разных платформ и фреймворков: http://www.zend.com/en/resources/PHP 7_infographic.Кратко и понятно: главная страница сайта будет открываться в 2 раза быстрей, ваш сервер сможет выдержать большее кол-во посетителей.
- В долгосрочной перспективе старые версии, скорее всего, перестанут поддерживаться Bitrix. Уже сейчас официально объявлено, что минимальная поддерживаемая версия PHP будет 5.6 с 2018 года:
- Расширены возможности языка.
Подробно про все нововведения можно почитать в статье на Хабре, тут не будем рассматривать их подробно. Суть в том, что разработчики будут рады ;)
Олег Казаков
Старший разработчик
Вообще, скорость работы, пожалуй, главная особенность PHP 7. Например, если ваш сайт выдерживает пиковую нагрузку 1000 посетителей/час, то его перевод на PHP 7 позволит держать нагрузку сразу в 1500 посетителей/час. Очень показательный кейс приведен по ссылке: переходом на PHP 7 Badoo сэкономили $1M на серверном оборудовании!
Что касается именно 1С-Битрикс. В среднем, перевод Bitrix проекта на PHP 7 даёт прирост скорости открытия страниц примерно в 2 раза. Особенно этот прирост заметен на проектах, где время генерации страницы до перевода превышало 500ms.
Переход на PHP 7 ускорит работу вашего сайта в ~2 раза!
ЗАКАЗАТЬ ПЕРЕХОД
Что нужно для перехода
Помимо желания, понадобится:
- Соответствующая версия Битрикс.Поддержка PHP 7 есть в версиях старше 16.5. Если поставить сайт с более ранней версией платформы на сервер с PHP 7, он просто не будет работать.
- Техническая возможность установить PHP 7 на вашем сервере.
Если у вас VDS или выделенный сервер, то как правило, проблем не возникает: достаточно иметь полный доступ к серверу, и квалифицированный системный администратор сможет провести все необходимые настройки.
Если же для размещения сайта вы используете shared-хостинг (TimeWeb, reg.ru и т.д.), обязательно уточните предварительно возможность использования PHP 7 (на сегодняшний день не все хостинг-провайдеры его поддерживают).
Подводные камни перехода на PHP 7
Несмотря на то что платформа 1С-Битрикс поддерживает PHP 7, при обновлении вашего проекта вы с высокой вероятностью столкнетесь с определенными проблемами.
Часто причина неработоспособности сайта после перехода на PHP 7 кроется в сторонних модулях и в собственном коде разработчиков: ведь совместимость стороннего кода с новой версией языка программирования никто не гарантировал. Поэтому, после обновления PHP, критически важно проводить полное комплексное тестирование проекта: важно проверить, что корректно работают все ключевые бизнес-сценарии (кстати, пользователи нашего сервиса QA Robot смогут проверить это нажатием одной кнопки ;)).
В PHP 7 недоступно расширение mysql - вместо него нужно использовать mysqli. Ничего страшного в этом нет, просто нужно быть готовым к тому, что перевести Bitrix на использование mysqli придется сразу после обновления. Под катом краткая инструкция для разработчиков.
Переключаем Битрикс на использование mysqli1) В файле /bitrix/php_interface/dbconn.php нужно добавить define("BX_USE_MYSQLI", true);
2) В файле /bitrix/.settings.php убедиться, что className выглядит так:
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection'
Ещё один неприятный момент заключается в том, что после перехода на PHP 7 вы не сможете установить из Marketplace демо-версии платных модулей, если для них не выпускались обновления после 1 июля 2016 года, та как изменился механизм их защиты.
Порядок перевода проекта на PHP 7
Рекомендуется проводить обновление поэтапно.
- Развернуть полную копию проекта на сервере с PHP 7.Важно, чтобы конфигурация тестового стенда была максимально близка к конфигурации боевого сервера (как в плане ПО, так и в плане «железа»).
- Провести полное тестирование проекта.Наш опыт показывает, что на большинстве проектов после перехода возникают ошибки. Какие-то лежат на поверхности и видны невооруженным глазом, а какие-то могут быть неочевидны.Так или иначе полное тестирование проекта - неотъемлимый этап перевода проекта на PHP 7. По итогам у вас будет перечнь возникших ошибок и понимание трудозатрат на их устранение.
- Устранить обнаруженные дефекты.В идеальном случае устранение дефектов может и не потребоваться. Но на практике данный этап запросто может стать самым трудоёмким во всей цепочке перевода сайта на PHP 7.
- Провести обновление боевого сервера до PHP7, перенести доработки проекта с тестового стенда.
Любые манипуляции с боевым сервером потенциально опасны. Поэтому проводить обновление рекомендуется в ночное время (или другое время минимальной пользовательской активности на вашем сайте). - Провести финальное тестирование на боевом сервере.Комплексное тестирование функционала на продакшн площадке никогда не помешает.
- Finish!
Итог
Перевод сайта на PHP 7 позволит без вложений в апгрейд железа на вашем сервере увеличить скорость работы вашего проекта в 2 раза, сократить потребление памяти сервера на ~50% и, как следствие, повысить отказоустойчивость вашего проекта.Есть ли более эффективные способы добиться таких показателей? Пожалуй, нет.
Сомневаетесь? Остались вопросы? Закажите консультацию!