Думбравану Вадим, Шаромов Денис
1С-Битрикс
Преимущества PHP 7:
от D7 до новой виртуальной машины
в приложении Bitrixconf
Ждем ваши вопросы:
онлайн на странице трансляции
Пишем
вопросы
здесь
#bitrixconf
ПРИВЕТ,
я руковожу производством
«1С-Битрикс» в Калининграде
я руковожу отделом
техподдержки «1С-Битрикс»
Почему нужно переходить на PHP 7
Он быстрее
1
Он в два раза
быстрее
2
Какой же он
быстрый!
3
Преимущества PHP 7
• В два раза больше попугаев*
• В три раза меньше расход памяти
• Приемлемая совместимость
• Новые возможности
*Единица измерений панели производительности
Тестирование
• Сравнивался PHP 5.6 vs PHP 7.0
• Последняя версия магазина с
каталогом в 10000 товаров
• Амазоновский инстанс
с3.2xlarge
• Нагрузка в 50 потоков
Результаты теста
• Встроенный мониторинг: 75 попугаев
• Время генерации: 1,152 сек
• Запросов в секунду: 43
• Потребление CPU: 100%
• Нагрузка на систему (la): 22,5
• Использовано памяти: 5150 МБ
VSPHP 5.6 PHP 7.0
• Встроенный мониторинг: 125 попугаев
• Время генерации: 0,525 сек
• Запросов в секунду: 58
• Потребление CPU: 88,5%
• Нагрузка на систему (la): 7,5
• Использовано памяти: 1484 МБ
Время генерации
Запросов в секунду
Изменения в движке PHP 7
• Новый парсер на основе модели
«абстрактное синтаксическое дерево»
(AST вместо YACC)
• Лексический анализатор теперь
контекстно зависимый
• Более эффективный компилятор в байт-
коды (на 30% меньше строк)
• Более эффективный интерпретатор байт-
кодов
• Переработаны внутренние структуры zval
Новое в языке PHP 7
• Scalar type declarations
• Return type declarations
• Null coalescing operator (??)
• Spaceship operator (<=>)
• Constant arrays using define()
• Anonymous classes
• Unicode codepoint escape syntax
• Group use declarations
• Generator Return Expressions
http://php.net/manual/en/migration70.new-features.php
Отлично, у PHP 7 все хорошо.
А у Bitrix D7?
Продукт готов к употреблению
• Версия 16.5 полностью доработана
для PHP 7
• Найдено несколько ошибок PHP,
созданы обращения, решены
• Битрикс24 готов к переходу
Наш корпоративный портал работает на PHP 7
Продукт готов к употреблениюДоработки продукта
• Поддержка mysqli
• Изменения в механизме исключений
• Несовместимое наследование
• Статический вызов нестатических
методов
• Изменение обработки имен
переменных
• Новые зарезервированные имена
• Обход ошибок PHP 7
http://php.net/manual/en/migration70.incompatible.php
Разработчикам
• Выпустите обновления модулей
в marketplace (include.php)
• Проверьте свой код по списку
совместимости
• Не забывайте, что минимальная
версия PHP 5.3 (40% клиентов)
http://php.net/manual/en/migration70.incompatible.php
Примеры
• String – BinaryString, HtmlFilter
• $$var[‘a’] - ${$var[‘a’]}
Примеры
• Новая иерархия исключений
Примеры
• Несовместимое наследование – типы и количество параметров
(теперь это warning)
Как перейти на PHP 7
• Обновите продукт
• Создайте тестовый сервер
• Проверьте наличие и готовность
необходимых расширений
• Установите/соберите PHP 7 (скоро в
ВМ)
• Настройте в продукте mysqli
(.settings.php, dbconn.php)
• Проверьте индивидуальные доработки
Готово? Теперь вы эксперт
по производительности
Виртуальная машина
новая версия
31 2
...так же просто в
настройке
CentOS 7 php 7 из коробки
Новая виртуальная машина — это:
Почему это надо использовать
• Минимальное время разворачивания
боевой конфигурации
• Полная поддержка «Битрикс24» и
«Битрикс: Управление сайтом»
• Оптимальная настройка с точки зрения
производительности
• Современный комплекс ПО
• Высокий уровень безопасности
• Возможность масштабирования в
автоматическом режиме
Меню виртуальной машины
• Автоизменение настроек в зависимости от
объема памяти
• Создание/удаление сайтов
• Масштабирование: управление базами
данных и нодами кластера
• Поисковая машина sphinx
• Кеширующий сервер memcached
• Обновление до PHP7 через пункт меню с
возможностью отката
• И много других
Основные функции
• Новая версия для CentOS 7
• «PHP7 ready»
• Вся работа с MySQL только с паролем
• Каждый сайт имеет своего пользователя
MySQL
• Создание кластера в фоновом режиме
• Переход на lsyncs с миграцией с csync
• nginx 1.10 с динамической подгрузкой
модулей
• Много небольших доработок
Изменения в новой версии
Ставим новую машину
Поднимаем копию проекта
Включаем PHP7
Проверяем и меняем роли:
боевой и тест
Как перейти на PHP7
• Важный шаг в развитии PHP
• Ускорение в два раза
• Незначительные усилия на переход
• В течение года PHP 7 будет везде
• Выгодно и клиентам, и хостерам
Переходите на PHP 7
Спасибо за внимание!
Вопросы?

Преимущества PHP 7: от D7 до новой виртуальной машины

  • 1.
    Думбравану Вадим, ШаромовДенис 1С-Битрикс Преимущества PHP 7: от D7 до новой виртуальной машины
  • 2.
    в приложении Bitrixconf Ждемваши вопросы: онлайн на странице трансляции Пишем вопросы здесь #bitrixconf
  • 3.
    ПРИВЕТ, я руковожу производством «1С-Битрикс»в Калининграде я руковожу отделом техподдержки «1С-Битрикс»
  • 4.
    Почему нужно переходитьна PHP 7 Он быстрее 1 Он в два раза быстрее 2 Какой же он быстрый! 3
  • 5.
    Преимущества PHP 7 •В два раза больше попугаев* • В три раза меньше расход памяти • Приемлемая совместимость • Новые возможности *Единица измерений панели производительности
  • 6.
    Тестирование • Сравнивался PHP5.6 vs PHP 7.0 • Последняя версия магазина с каталогом в 10000 товаров • Амазоновский инстанс с3.2xlarge • Нагрузка в 50 потоков
  • 7.
    Результаты теста • Встроенныймониторинг: 75 попугаев • Время генерации: 1,152 сек • Запросов в секунду: 43 • Потребление CPU: 100% • Нагрузка на систему (la): 22,5 • Использовано памяти: 5150 МБ VSPHP 5.6 PHP 7.0 • Встроенный мониторинг: 125 попугаев • Время генерации: 0,525 сек • Запросов в секунду: 58 • Потребление CPU: 88,5% • Нагрузка на систему (la): 7,5 • Использовано памяти: 1484 МБ
  • 8.
  • 9.
  • 10.
    Изменения в движкеPHP 7 • Новый парсер на основе модели «абстрактное синтаксическое дерево» (AST вместо YACC) • Лексический анализатор теперь контекстно зависимый • Более эффективный компилятор в байт- коды (на 30% меньше строк) • Более эффективный интерпретатор байт- кодов • Переработаны внутренние структуры zval
  • 11.
    Новое в языкеPHP 7 • Scalar type declarations • Return type declarations • Null coalescing operator (??) • Spaceship operator (<=>) • Constant arrays using define() • Anonymous classes • Unicode codepoint escape syntax • Group use declarations • Generator Return Expressions http://php.net/manual/en/migration70.new-features.php
  • 12.
    Отлично, у PHP7 все хорошо. А у Bitrix D7?
  • 13.
    Продукт готов купотреблению • Версия 16.5 полностью доработана для PHP 7 • Найдено несколько ошибок PHP, созданы обращения, решены • Битрикс24 готов к переходу Наш корпоративный портал работает на PHP 7
  • 14.
    Продукт готов купотреблениюДоработки продукта • Поддержка mysqli • Изменения в механизме исключений • Несовместимое наследование • Статический вызов нестатических методов • Изменение обработки имен переменных • Новые зарезервированные имена • Обход ошибок PHP 7 http://php.net/manual/en/migration70.incompatible.php
  • 15.
    Разработчикам • Выпустите обновлениямодулей в marketplace (include.php) • Проверьте свой код по списку совместимости • Не забывайте, что минимальная версия PHP 5.3 (40% клиентов) http://php.net/manual/en/migration70.incompatible.php
  • 16.
    Примеры • String –BinaryString, HtmlFilter • $$var[‘a’] - ${$var[‘a’]}
  • 17.
  • 18.
    Примеры • Несовместимое наследование– типы и количество параметров (теперь это warning)
  • 19.
    Как перейти наPHP 7 • Обновите продукт • Создайте тестовый сервер • Проверьте наличие и готовность необходимых расширений • Установите/соберите PHP 7 (скоро в ВМ) • Настройте в продукте mysqli (.settings.php, dbconn.php) • Проверьте индивидуальные доработки
  • 20.
    Готово? Теперь выэксперт по производительности
  • 21.
  • 22.
    31 2 ...так жепросто в настройке CentOS 7 php 7 из коробки Новая виртуальная машина — это:
  • 23.
    Почему это надоиспользовать • Минимальное время разворачивания боевой конфигурации • Полная поддержка «Битрикс24» и «Битрикс: Управление сайтом» • Оптимальная настройка с точки зрения производительности • Современный комплекс ПО • Высокий уровень безопасности • Возможность масштабирования в автоматическом режиме
  • 24.
  • 25.
    • Автоизменение настроекв зависимости от объема памяти • Создание/удаление сайтов • Масштабирование: управление базами данных и нодами кластера • Поисковая машина sphinx • Кеширующий сервер memcached • Обновление до PHP7 через пункт меню с возможностью отката • И много других Основные функции
  • 26.
    • Новая версиядля CentOS 7 • «PHP7 ready» • Вся работа с MySQL только с паролем • Каждый сайт имеет своего пользователя MySQL • Создание кластера в фоновом режиме • Переход на lsyncs с миграцией с csync • nginx 1.10 с динамической подгрузкой модулей • Много небольших доработок Изменения в новой версии
  • 27.
    Ставим новую машину Поднимаемкопию проекта Включаем PHP7 Проверяем и меняем роли: боевой и тест Как перейти на PHP7
  • 28.
    • Важный шагв развитии PHP • Ускорение в два раза • Незначительные усилия на переход • В течение года PHP 7 будет везде • Выгодно и клиентам, и хостерам Переходите на PHP 7
  • 29.