Успешно запустил свой домашний блог, написанный на bitrix, на версии php7. Версия bitrix – последняя beta. Замерил утилитой ab-тестирования (из комплекта с Апатчем) скорость работы в первом и втором случаях:
Методика тестирования: Меняем версию PHP в настройках апатча и прогоняем тесты ab-утилитой. Также смотрим на время генерации страницы модулем производительности. Ничего особенно, но для ответа на вопрос: а быстрее ли bitrix с php7? и примерно на сколько быстрее?
Usage: ab [options] [http://]hostname[:port]/path
Options are:
-n requests Number of requests to perform
-c concurrency Number of multiple requests to make at a time
-s timeout Seconds to max. wait for each response
Default is 30 seconds
-k Use HTTP KeepAlive feature
…
Результаты следующие:
PHP 5.6 on Bitrix Vs.
PHP7 (Zend Engine v3.0.0) on Bitrix
Apache/2.4.20 (Win64) PHP/5.6.20
Document Length: 2987 bytes
Concurrency Level: 10
Time taken for tests: 134.852 seconds
Complete requests: 5000
Failed requests: 2
Requests per second: 37.08 [#/sec]
Time per request: 269.703 [ms]
Time per request: 26.970 [ms] (mean, across all concurrent requests)
Transfer rate: 130.68 [Kbytes/sec] received
Apache/2.4.20 (Win64) PHP/7.0.5
Document Length: 2987 bytes
Concurrency Level: 10
Time taken for tests: 130.592 seconds
Complete requests: 5000
Failed requests: 2
Requests per second: 38.29 [#/sec]
Time per request: 261.183 [ms]
Time per request: 26.118 [ms] (mean, across all concurrent requests)
Transfer rate: 133.86 [Kbytes/sec] received
Percentage of the requests served within a certain time (ms)
50% 98
66% 104
75% 108
80% 111
90% 120
95% 131
98% 151
99% 215
100% 42081 (longest request)
Percentage of the requests served within a certain time (ms)
50% 77
66% 83
75% 88
80% 91
90% 105
95% 123
98% 148
99% 187
100% 42048 (longest request)
Как видно, местами процентов на 40% быстрее. Что интересно, что и скорость отдачи контента сервером увеличилась (см. transfer rate). Как мне кажется, это хороший показатель.
PS\2 в момент запуска php7 столкнулся со следующей ошибкой компонента:
Лечится более четким указанием определяемого значения переменной через {}:
// \bitrix\components\bitrix\blog.blog\component.php
global ${$arParams["FILTER_NAME"]};
$arFilter = ${$arParams["FILTER_NAME"]}; // вот так мы явно указываем имя переменной
if(!is_array($arFilter))
$arFilter = array();
PS Выходит очень круто, что просто обновляя версию php, получаем прирост! Очень радует, что битрикс понимает важность перехода на php7, и что уже даже что-то работает
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».