Bitrix и PHP7 - быстрее, выше, сильнее

В конце 2015 года свет увидел стабильный релиз новой версии языка программирования PHP 7. Платформа 1С-Битрикс начиная с версии 16.5 поддерживает работу на PHP 7.
Стоит ли обновлять свои сервера? Какие выгоды несёт нам PHP 7? Об этом и поговорим!

Чем хорош PHP 7 и почему он будет полезен проекту


  1. Скорость работы.
    Значительно увеличена скорость работы (~ в 2 раза), при этом на 50% сокращено потребление ресурсов сервера. Наглядная инфографика со сравнением скорости работы разных платформ и фреймворков: http://www.zend.com/en/resources/PHP 7_infographic.
    Кратко и понятно: главная страница сайта будет открываться в 2 раза быстрей, ваш сервер сможет выдержать большее кол-во посетителей.

  2. В долгосрочной перспективе старые версии, скорее всего, перестанут поддерживаться Bitrix. Уже сейчас официально объявлено, что минимальная поддерживаемая версия PHP будет 5.6 с 2018 года:

  3. Расширены возможности языка.
    Подробно про все нововведения можно почитать в статье на Хабре, тут не будем рассматривать их подробно. Суть в том, что разработчики будут рады ;)

Олег Казаков
Старший разработчик
Вообще, скорость работы, пожалуй, главная особенность PHP 7. Например, если ваш сайт выдерживает пиковую нагрузку 1000 посетителей/час, то его перевод на PHP 7 позволит держать нагрузку сразу в 1500 посетителей/час. Очень показательный кейс приведен по ссылке: переходом на PHP 7 Badoo сэкономили $1M на серверном оборудовании!
Что касается именно 1С-Битрикс. В среднем, перевод Bitrix проекта на PHP 7 даёт прирост скорости открытия страниц примерно в 2 раза. Особенно этот прирост заметен на проектах, где время генерации страницы до перевода превышало 500ms.
Переход на PHP 7 ускорит работу вашего сайта в ~2 раза!

Заказать переход

Что нужно для перехода

Помимо желания, понадобится:

  1. Соответствующая версия Битрикс.
    Поддержка PHP 7 есть в версиях старше 16.5. Если поставить сайт с более ранней версией платформы на сервер с PHP 7, он просто не будет работать.

  2. Техническая возможность установить 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 придется сразу после обновления. Под катом краткая инструкция для разработчиков.

Переключаем Битрикс на использование mysqli
1) В файле /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

Рекомендуется проводить обновление поэтапно.

  1. Развернуть полную копию проекта на сервере с PHP 7.
    Важно, чтобы конфигурация тестового стенда была максимально близка к конфигурации боевого сервера (как в плане ПО, так и в плане «железа»).

  2. Провести полное тестирование проекта.
    Наш опыт показывает, что на большинстве проектов после перехода возникают ошибки. Какие-то лежат на поверхности и видны невооруженным глазом, а какие-то могут быть неочевидны.
    Так или иначе полное тестирование проекта - неотъемлимый этап перевода проекта на PHP 7. По итогам у вас будет перечнь возникших ошибок и понимание трудозатрат на их устранение.

  3. Устранить обнаруженные дефекты.
    В идеальном случае устранение дефектов может и не потребоваться. Но на практике данный этап запросто может стать самым трудоёмким во всей цепочке перевода сайта на PHP 7.

  4. Провести обновление боевого сервера до PHP7, перенести доработки проекта с тестового стенда.
    Любые манипуляции с боевым сервером потенциально опасны. Поэтому проводить обновление рекомендуется в ночное время (или другое время минимальной пользовательской активности на вашем сайте).

  5. Провести финальное тестирование на боевом сервере.
    Комплексное тестирование функционала на продакшн площадке никогда не помешает.

  6. Finish!

Итог

Перевод сайта на PHP 7 позволит без вложений в апгрейд железа на вашем сервере увеличить скорость работы вашего проекта в 2 раза, сократить потребление памяти сервера на ~50% и, как следствие, повысить отказоустойчивость вашего проекта.
Есть ли более эффективные способы добиться таких показателей? Пожалуй, нет.

Сомневаетесь? Остались вопросы? Закажите консультацию!

Автор:
Цыкарев Алексей
Руководитель Digital Spectr