Успешно запустил свой домашний блог, написанный на 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, и что уже даже что-то работает
Роман Семёнов написал: а то что этот способ используют сами разработчики битрикс - это конечно плохо.
согласен с вами, через суперглобальный массив куда изящнее и понятнее.
Роман Семёнов написал: вместо этого наследия из perl ${$arParams["FILTER_NAME"]}
а где доказательство, что это наследие perl?
насколько я знаю, в документе Zend Engine 2.0 в главе String offset syntax написано:
The Zend Engine will feature a new syntax for accessing string offsets. Using the array offsets syntax for string offsets will be deprecated initially by a run-time warning (possibly E_NOTICE or maybe a possible E_STRICT).
т.е. такой синтаксис появился уже аж в php5й версии (вместе с Zend Engine 2.0)
ну значит не прав. просто помню помню что php3 делался из г-на и палок (набор сркиптов на perl и кода на С) а в перле были подобные странные конструкции. http://perldoc.perl.org/perlref.html#...References
Георгий Резцов, ну рекомендую пройти начальный курс по PHP где нибуть или просто почитать. чтоб не попадать в такую глупую ситуацию. ато так можно половину инструкций PHP перестать использовать
Роман Семёнов написал: просто помню помню что php3 делался из г-на и палок (набор сркиптов на perl и кода на С)
уже 2016 год на носу, про наследие php3.0 и такой говнокод можно забывать. сейчас вышел php7, он крут, и про смесь перла с си, которую еще Расмус писал, можно забыть. ядро php7 теперь целиком на С с нуля, только хардкор!
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».