Проверка тем и плагинов WordPress на совместимость с PHP 7. Wordpress и php 7
PHP7 и его совместимость с плагинами WordPress
Если вы читали новости о HHVM, вы знаете, что HHVM произвел настоящую революцию. Он позволяет значительно ускорить выполнение PHP. Вы можете добиться ускорения работы WordPress более чем в 2 раза по сравнению с PHP 5.6. Однако PHP – не единственный фактор, влияющий на скорость работы сайта. Вы можете использовать простой VPS за десять долларов с установленным кэшированием Nginx, и ваш сайт будет выдерживать миллионы хитов в день. С другой стороны, бывают ситуации, когда вы не сможете использовать такие методы.
Не забывайте о Woocommerce и приложениях, в которых нельзя кэшировать бэкэнд.
В то время как HHVM начал революцию, PHP ее быстро поддержал и развил. Сегодня PHP7 работает медленнее лишь на 10%, но он еще даже не выпущен официально. Я уверен, что разработчики PHP обязательно улучшат скорость его работы в последующих релизах.
Недостатком HHVM всегда была совместимость (не все плагины поддерживали HHVM) и некоторые баги, которые со временем были исправлены. В число таких багов входили утечки памяти (высокое потребление памяти), а также высокое использование процессорных ресурсов в некоторых ситуациях. Я слышал, что многие проблемы были решены в последней версии, и совместимость только улучшилась.
HHVM требует некоторых навыков для своей реализации. Далеко не каждая хостинг-панель (Vesta, Virtualmin, Zpanel и т.д.) применила его на практике. HHVM в основном использовался хостинг-компаниями и сайтами на выделенном VPS. Easyengine сделал возможным использование HHVM для простых пользователей. С другой стороны, супер популярный ServerPilot до сих пор не реализовал HHVM, однако при этом они включили поддержку PHP7 с похожим увеличением скорости.
Одно из главных преимуществ PHP 7 – это практически такая же скорость для WordPress и более простая реализация. Если вы хотите попробовать PHP7, вы можете воспользоваться релиз-кандидатом, который увидел свет не так давно.
Я буду использовать одно из лучших решений среди хостинг-панелей – ServerPilot. Я думаю, что пришла пора для разработчиков протестировать их плагины, особенно сейчас, когда доступны такие прекрасные и доступные ресурсы, как DigitalOcean (взимают почасовую оплату) и ServerPilot (бесплатный).
Совместимость WordPress плагинов с PHP7
Я узнал у друзей, какие плагины они хотели бы видеть совместимыми с PHP7 «из коробки», и составил список из бесплатных и платных плагинов, к которым у меня был доступ. Вот результат:
- Admin Word Count – Бесплатный
- AdRotate – Платный и бесплатный
- Akismet – Бесплатный
- Awesome Shortcodes For Genesis – Бесплатный
- Broken Link Checker – Бесплатный
- CloudFlare – Бесплатный
- Contact Form 7 – Бесплатный
- CSSHero – Платный
- Duplicator – Бесплатный и платный
- Easy Plugin for AdSense – Бесплатный и платный
- Easy Social Share Buttons for WordPress – Бесплатный
- Fanciest Author Box – Платный
- FEEDZY RSS Feeds by b*web – Бесплатный
- FFF Cron Manager – Бесплатный
- Genesis Custom Footer – Бесплатный
- Genesis Shortcodes – Бесплатный
- Genesis Simple Sidebars – Бесплатный
- Genesis Sandbox Featured Content Widget
- Google Analytics by Yoast – Бесплатный и платный
- Growmap Anti Spambot Plugin – Бесплатный
- Hide My WP – Платный
- Jetpack by WordPress.com – Бесплатный
- Kraken Image Optimizer – Плагин бесплатный, но сервис платный
- Leadin – Бесплатный
- Local Indicator – Бесплатный
- NextScripts – Платный и бесплатный
- Optimize Database after Deleting Revisions – Бесплатный
- OptinMonster – Платный
- Pretty Link – Платный и бесплатный
- Redirection – Бесплатный
- Remove XMLRPC Pingback Ping – Бесплатный
- Roost Web Push – Бесплатный плагин, но сервис платный
- RSS with Images – Бесплатный
- SEO Friendly Images – Бесплатный
- Shortcodes Ultimate – Бесплатный и платный
- Simple 301 Redirects – Бесплатный
- Theme Junkie Custom CSS – Бесплатный
- ThirstyAffiliates – Бесплатный и платный
- TinyMCE Advanced – Бесплатный
- UberMenu 3 – Платный
- Ultimate Nofollow – Бесплатный
- UpdraftPlus – Бесплатный и платный
- WordPress Related Posts – Бесплатный
- WP Pro Ad System – Платный
- WP Rich Snippets – Платный
- WP Rocket – Платный
- WP Shortcode by MyThemeShop – Бесплатный
- WP-Mail-SMTP – Бесплатный
- WP-Optimize – Бесплатный
- Yoast SEO – Бесплатный и платный
- Simple Social Icons – Бесплатный
Как только я активировал сайт со всеми этими плагинами на сервере с PHP7, я столкнулся с некоторыми проблемами. Меня приветствовал пустой экран с сообщением об ошибке, которое не давало сайту загрузиться:
Fatal error: ‘break’ not in the ‘loop’ or ‘switch’ context in /itsmdaily/public/wp-content/plugins/social-networks-auto-poster-facebook-twitter-g/inc-cl/fl.php on line 39
Warning: Declaration of tcm_management_table::prepare_items($search) should be compatible with WP_List_Table::prepare_items() in /itsmdaily/public/wp-content/plugins/thin-content-manager/thin-content-manager.php on line 39
Warning: Cannot modify header information – headers already sent by (output started at /itsmdaily/public/wp-content/plugins/thin-content-manager/thin-content-manager.php:39) in /itsmdaily/public/wp-includes/pluggable.php on line 1207
Спустя две минуты я получил четвертую ошибку на сайте:
Fatal error: Uncaught Error: Class ‘GS_Featured_Content’ not found in /itsmdaily/public/wp-includes/widgets.php:591 Stack trace: #0 /itsmdaily/public/wp-includes/widgets.php(720): WP_Widget_Factory->register(‘GS_Featured_Con…’)
PHP 7 и плагины
В данный момент три плагина из списка не работают с PHP7:
- NextScripts – Последнее обновление было 2 недели назад, но я слышал, что скоро будет выпущена версия 4
- Thin Content Manager – Последний раз обновлялся два года назад
- Genesis Featured Content – Последний раз обновлялся год назад
Как вы можете видеть, чем старше плагин, тем выше шанс, что он не будет работать с PHP7. Однако будьте осторожны, даже недавно обновленные плагины могут перестать работать, что показал случай с NextScripts. Обязательно протестируйте их перед тем, как переносить свой сайт на PHP7.
В целом же все будет в порядке. Возможно, один или два плагина перестанут работать. Я уверен, что плагины будут обновлены вскоре после официального выхода PHP7.
Один из плагинов из списка, который привлек мое внимание – это Simple Social Icons от StudioPress.
Автор плагина обновил его еще в начале августа, добавив к нему совместимость с PHP7. Возможно, это было сделано потому, что плагин действительно очень простой. Вот цитата из журнала изменений:
Если плагины работают и платформа WordPress совместима с PHP7, могу ли я запустить свой сайт на предрелизной версии? Хотелось бы, но…
К сожалению, NewRelic пока не доступен для PHP7. Это означает, что я не смогу выявить серьезные проблемы и даже проблемы, связанные с плагинами, находясь далеко от компьютера. Однако, как только NewRelic станет доступным для PHP7, я тут же перемещу свои сайты на PHP7-дроплет.
Что по поводу плагина X?
Стоит отметить, что и WordPress, и PHP имеют тенденцию повреждать плагины в последних релизах. К примеру, WordPress 4.3 нарушил работу плагина Front-end Editor (в бета-версии).
Если вы привыкли к нему, то, увы, такие вещи тоже случаются. Я помню еще те времена, когда плагин Max Banner PRO (платный) перестал работать с PHP 5.5.
Когда плагин перестал работать, у пользователей было два выхода из такой ситуации. Найти ему замену или использовать версию PHP младше, чем 5.5. Если вы используете плагин, который не работает с последней версией PHP, бесплатный или платный, самое лучшее, что вы можете сделать – это уведомить его автора об этом. Если вам улыбнется удача, автор плагина быстро добавит поддержку новой версии PHP.
Все это приводит нас к одному вопросу: «Как узнать, что плагин, который я использую, будет поддерживаться в будущем?»
Мне кажется, что лучший ответ на этот вопрос – использовать плагины, созданные компаниями с хорошей репутацией (Automattic, StudioPress, MyThemeShop, ElegantThemes и т.д.). Это верно и для платных плагинов, и для бесплатных.
В процессе поиска бесплатных плагинов в каталоге WordPress всегда обращайте внимание на время последнего обновления и количество установок/загрузок. Все это является хорошим индикатором «здоровья» плагина. Возможно, однажды WordPress удалит неподдерживаемые плагины из каталога.
Вы должны помнить, что плагины, лишенные поддержки разработчиков, могут иметь уязвимости и открывают пути для взлома вашего сайта.
Вторая проблема, с которой вы можете столкнуться в результате того, что вы используете устаревший плагин – это приведение всех вещей в порядок. Представьте себе, что вы используете плагин для шорткодов. Вы вставили прекрасные объекты в свои записи. У вас примерно 1000 записей. Плагин перестал работать. Вы должны найти замену ему.
И, что самое интересное, вы теперь должны заменить 1000 шорткодов…
Релиз PHP7 должен быть выпущен в середине октября 2015.
Источник: http://www.itsmdaily.com
oddstyle.ru
Как я обновил php до 7 версии и wordpress | CODESELLER
Публикация в группе: Кастомизация WP-Recall и Wordpress
Вообщем еще год назад хотел перейти на php 7, но тогда не было memcached под эту версию и я забил (там что-то как-то можно было собрать, но я рукожоп и единственное что могу делать - вводить команды с гугла)
Сейчас предпринял еще одну попытку и все получилось, производительность выросла раз в 5 где-то, страницы для залогиненых открываются почти так же быстро как и для гостей с wp-supe-cache.
В чем конкретно заслуга (php 7 или opcache вместо xcache) я сказать не могу, главное все работает.
Если у кого-то как и у меня нет админа, но вы хотите проделать то же самое (конечно на свой страх и риск) то напишу как это сделал я:
Внимание! Я в части серверов и администрирования нуль, я даже до сих пор путаюсь в memcache и memcached и, вполне возможно, поставил себе что-то лишнее, так что настоятельно рекомендую обратиться к профессионалам, что бы вам все это сделали нормально. По сути главный мой посыл в конце записи с результатами, чем я хочу подстегнуть людей обновляться и делать свои сайты быстрее, а то очень-очень часто вижу нереально тормозные wordpress сайты.
У меня стоит:
Еще год назад в настройках www домена мне добавили возможность выбора версии php, но я написал вначале почему тогда я не стал использовать php7. Сейчас проблема решилась:
- Я выбрал для своего www домена php 7.0.15 (у меня там такая)
- Затем по гайду отсюда я выполнил следующие команды в ssh клиенте:
- yum install autoconf gcc libmemcached-devel zlib-devel/opt/php70/bin/pecl install memcached
- echo extension=memcached.so >> /opt/php70/etc/php.d/memached.ini
- Затем в php.ini который в папке с моим доменом добавил:
- extension=memcached.so
- zend_extension=opcache.so
- Перезапустил апач: service httpd restart
- Перезапустил memcached: service memcached restart
- Поставил Memcached Redux (там всего 1 php файл object-cache.php его я поместил в /wp-content)
- Все, результаты этой работы смотрите ниже
p.s. memcached redux помещает стандартный object cache wordpress'а в ОЗУ (без него все это кешируется только на время генерации страницы) что так же дает хороший прирост производительности. Так же я его использую что бы кешировать какие-то сложные запросы и отдельные части страниц: например последние комментарии или лучшие записи в категории. Возможно я как то не правильно описал работу плагина, но именно так я понимаю его смысл и вроде все работает
Далее идет сравнение:
-----------------------------------------------
php 5.3.3 - PHP 5.3.3 + xcache + memcached
php 7 - PHP 7.0.15 + opcache + memcached
-----------------------------------------------
php 5.3.3: Главная: 17.79 Mb / 0,62477 сек / 17 запросов
php 7: Главная: 8.98 Mb / 0,11904 сек / 17 запросов
php 5.3.3:Категория: 17.72 Mb / 0,53250 сек / 21 запросов
php 7: Категория: 8.92 Mb / 0,14287 сек / 21 запросов
php 5.3.3:Запись в которой 100+ комментариев: 20.49 Mb / 1,59759 сек / 140 запросов
php 7: Запись в которой 100+ комментариев: 10.68 Mb / 0,39940 сек / 140 запросов
php 5.3.3:Запись без комментариев: 17.35 Mb / 0,50184 сек / 21 запросов
php 7: Запись без комментариев: 8.64 Mb / 0,09951 сек / 21 запросов
Автор публикации
не в сети 5 часов
Preci
616 Комментарии: 244Публикации: 43Регистрация: 11-11-2014Продаж/Покупок: 1737/48codeseller.ru
Проверка шаблона и плагинов WordPress на совместимость с PHP 7
Прошло уже достаточно много времени с момента выхода версии PHP 7, но пока на неё перешли, согласно статистике, менее 2% от всех сайтов WordPress. Тем не менее, большинство хостинг-провайдеров хотели бы добавить в панель управления своим клиентам опцию PHP 7. Что в ней такого особенного?
График от Zend.com наглядно показывает возможности PHP 7. Кому же не хочется бесплатно в 2 раза увеличить скорость своего сайта при помощи новой версии (по сравнению со старыми 5 и 6)? Kinsta демонстрирует результаты бенчмарков, но они отличаются в части HHVM. Мы не будем обсуждать здесь эти отличия.
Если вы используете фреймворк или тему, которые давно не обновлялись, лучше перейдите на премиум либо РНР 7-совместимую тему. То же самое касается и плагинов WordPress. Вы ведь не хотите иметь устаревший плагин, который будет тормозить или нарушать работу вашего сайта после перехода на PHP 7? Некоторые функции PHP, имевшиеся в старых версиях, в новой полностью удалены.
Прежде чем щёлкать выключатель PHP 7 в панели управления, стоит сначала установить плагин проверки на совместимость PHP Compatibility Checker. Этот плагин был разработан компанией WP Engine, одним из ведущих производителей в данной области. Он определяет, поддерживает ваша текущая тема и установленные плагины версию PHP 7 или нет. Из панели администратора WordPress найдите и установите этот плагин, а затем активируйте его.
Зайдите в меню Сервис и выберите пункт «Совместимость с PHP», затем выберите «PHP 7» и кликните кнопку «Run».
Ниже показаны результаты тестов, выполненные для активных плагинов и текущей темы. Все они признаны совместимыми, за исключением одного премиум плагина, представленного разработчиком темы. Он помечен как несовместимый из-за одной строки кода, ссылающейся на функцию, которая отсутствует в PHP 7. Если у вас появляется слишком много подобных ошибок, обратитесь к разработчику вашей темы за обновлениями.
Если вы ещё не обновились до версии PHP 7, сделайте это прямо сейчас!
clubwp.ru
Мой опыт миграции на PHP 7 / Хабр
Несколько дней назад я переключил свой сервер с порядка 30-ти сайтами на PHP 7. Некоторые из них были достаточно старыми и составляли широкий набор с различных фреймворков и CMS. Вот несколько советов для тех кто еще не решил переходить на PHP 7 или нет.Начнем с того что я понимаю что есть много людей которые не считают стабильную версию действительно «стабильной» пока она чуть-чуть не повзрослела, ожидая что еще найдутся какие-то баги или несовместимости. С того что я пока видел, пробуя каждый release candidate как только он выходил, совсем безопасно переключиться на PHP 7 как только он выйдет. Я ни разу не заметил какого-то непонятного поведения или вылета которому виной не был бы я сам. Несмотря на то что это новая версия она не несет много несовместимых изменений, то есть по большому счету можете относиться к ней как к просто PHP 5.7 только существенно быстрее. И скорость действительно впечатляет, даже невероятно как. Для примера простой сайт на PHPixie заработал почти в три раза быстрее практически сравнившись со скоростью Phalcon на PHP 5.6, несколько сайтов на Wordpress показали стабильный прирост в скорости в два раза. Если учесть недавний отчет от Google что потеря даже 10% производительности загрузки страниц приводит к ощутимой потери клиентов, то если вы можете запросто ускорить работу сайта в два раза просто обновив PHP вы получаете больше продаж ничего не потратив. Вспомните об этом, когда будете убеждать своего менеджера перейти на PHP 7. Ничего не убеждает лучше, чем объем продаж.
Несколько замечаний
Расширение mysql больше недоступно, так что если вы еще не перешли на PDO или mysqli то теперь уж точно придется. Благо во многих случаях достаточно просто заменить вызовы к mysql_ функциям на mysqli_.
E_STRICT ошибки реклассифицированы как другие типы ошибок. Если раньше вы их прятали или игнорировали, то теперь они начнут всплывать вместе с другими. Например, вызов нестатических методов статически теперь выбрасывает E_DEPRECATED что создало кучу проблем с Joomla 2.5 который почему-то делает это довольно часто. Также несовместимое наследование теперь классифицируется как E_WARNING. Wordpress уже с февраля тестируется на работу с PHP 7, так что с ним самим проблем никаких нет, правда, несколько плагинов таки оказались несовместимыми.
foreach теперь всегда работает с копией массива, так что все изменения массива во время итерации не повлияют на саму итерацию. На самом деле, во многих случаях оно и так работало и сам случай довольно редкий, но все же в одном из плагинов я на это наткнулся.
Теперь $foo->$bar['baz'] интерпретируется как ($foo->$bar)['baz'] а не $foo->{$bar['baz']} как в PHP 5. Это редкий случай, но тоже попалось в одном из плагинов, и как оказалось в Magento 1.x (core/Mage/Core/Model/Layout.php).
Имейте в виду, что не все расширения уже поддерживают PHP 7. Я уже не могу использовать понравившийся мне XCache, который верно служил мне много лет.
Вряд ли вы встретите какие-то проблемы кроме вышеперечисленных, но если вам интересно то полный список доступен на сайте PHP.
В сумме мне заняло около 5 часов чтобы перевести все сайты на PHP 7. Процесс совсем нетрудный и пакеты доступны уже для всех популярных дистрибутивов. Так что даже если вы собираетесь ждать стабильного релиза (уже совсем недолго), нет никакой причины не приготовить свои сайты к миграции наперед.
P.S.: Фея в заголовке статьи — наш праздничный логотип PHPixie 3, он не совсем в тему, но очень хотелось поделиться. Ну можете считать, что это она PHP 7 несет в мешке.
habr.com
Тестирование PHP 7.1 на популярных CMS
В начале декабря вышла стабильная версия PHP 7.1, пришло время протестировать скорость работы популярных CMS (WordPress, Drupal и Joomla) на новой версии PHP.
Год назад мы тестировали PHP 7.0, но только на WordPress. На тот момент производительность возросла пример на 50% в сравнении с более старыми версиями PHP. Теперь настало время протестировать PHP 7.1 и на большом числе CMS!Для тестирования мы будем использовать сервер PHAETON с панелью DirectAdmin, который имеет конфигурацию: Intel Xeon E3-1270 / 32 GB ECC RAM / 4 x 480 GB SSD (RAID 10).
Все сайты были установлены с помощью каталога приложений "Installatron" на тариф "Корпоратив" из профессиональной линейки тарифов.
Тестирование мы производили локально (для снижения издержек сети), с помощью утилиты ab: делаем 100 запросов в 10 потоков (условная эмуляция того, что на сайт одновременно заходят 10 посетителей и загружают 100 страниц).
Начнем с тестирования WordPress 4.7.
Версия PHP 5.6:
[~]# ab -c 10 -n 100 http://wp.p-host.in/This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking wp.p-host.in (be patient).....doneServer Software: nginx/1.10.1Server Hostname: wp.p-host.inServer Port: 80Document Path: /Document Length: 49297 bytesConcurrency Level: 10Time taken for tests: 3.591 secondsComplete requests: 100Failed requests: 0Write errors: 0Total transferred: 4953200 bytesHTML transferred: 4929700 bytesRequests per second: 27.85 [#/sec] (mean)Time per request: 359.070 [ms] (mean)Time per request: 35.907 [ms] (mean, across all concurrent requests)Transfer rate: 1347.12 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 0Processing: 160 351 257.4 265 1268Waiting: 156 343 256.7 261 1264Total: 160 351 257.5 265 1268Percentage of the requests served within a certain time (ms) 50% 265 66% 306 75% 341 80% 401 90% 972 95% 1016 98% 1181 99% 1268 100% 1268 (longest request)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [~]# ab -c 10 -n 100 http://wp.p-host.in/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking wp.p-host.in (be patient).....done
Server Software: nginx/1.10.1 Server Hostname: wp.p-host.in Server Port: 80
Document Path: / Document Length: 49297 bytes
Concurrency Level: 10 Time taken for tests: 3.591 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 4953200 bytes HTML transferred: 4929700 bytes Requests per second: 27.85 [#/sec] (mean) Time per request: 359.070 [ms] (mean) Time per request: 35.907 [ms] (mean, across all concurrent requests) Transfer rate: 1347.12 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 0 Processing: 160 351 257.4 265 1268 Waiting: 156 343 256.7 261 1264 Total: 160 351 257.5 265 1268
Percentage of the requests served within a certain time (ms) 50% 265 66% 306 75% 341 80% 401 90% 972 95% 1016 98% 1181 99% 1268 100% 1268 (longest request) |
Версия PHP 7.0:
[~]# ab -c 10 -n 100 http://wp.p-host.in/This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking wp.p-host.in (be patient).....doneServer Software: nginx/1.10.1Server Hostname: wp.p-host.inServer Port: 80Document Path: /Document Length: 49297 bytesConcurrency Level: 10Time taken for tests: 2.097 secondsComplete requests: 100Failed requests: 0Write errors: 0Total transferred: 4953200 bytesHTML transferred: 4929700 bytesRequests per second: 47.69 [#/sec] (mean)Time per request: 209.692 [ms] (mean)Time per request: 20.969 [ms] (mean, across all concurrent requests)Transfer rate: 2306.77 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 0Processing: 57 206 215.5 137 966Waiting: 56 205 215.2 136 966Total: 57 206 215.6 137 966Percentage of the requests served within a certain time (ms) 50% 137 66% 155 75% 166 80% 176 90% 780 95% 854 98% 876 99% 966 100% 966 (longest request)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [~]# ab -c 10 -n 100 http://wp.p-host.in/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking wp.p-host.in (be patient).....done
Server Software: nginx/1.10.1 Server Hostname: wp.p-host.in Server Port: 80
Document Path: / Document Length: 49297 bytes
Concurrency Level: 10 Time taken for tests: 2.097 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 4953200 bytes HTML transferred: 4929700 bytes Requests per second: 47.69 [#/sec] (mean) Time per request: 209.692 [ms] (mean) Time per request: 20.969 [ms] (mean, across all concurrent requests) Transfer rate: 2306.77 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 0 Processing: 57 206 215.5 137 966 Waiting: 56 205 215.2 136 966 Total: 57 206 215.6 137 966
Percentage of the requests served within a certain time (ms) 50% 137 66% 155 75% 166 80% 176 90% 780 95% 854 98% 876 99% 966 100% 966 (longest request) |
Версия PHP 7.1:
[~]# ab -c 10 -n 100 http://wp.p-host.in/This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking wp.p-host.in (be patient).....doneServer Software: nginx/1.10.1Server Hostname: wp.p-host.inServer Port: 80Document Path: /Document Length: 49297 bytesConcurrency Level: 10Time taken for tests: 1.958 secondsComplete requests: 100Failed requests: 0Write errors: 0Total transferred: 4953200 bytesHTML transferred: 4929700 bytesRequests per second: 51.08 [#/sec] (mean)Time per request: 195.783 [ms] (mean)Time per request: 19.578 [ms] (mean, across all concurrent requests)Transfer rate: 2470.65 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.0 0 0Processing: 57 191 226.1 120 908Waiting: 56 189 226.0 117 908Total: 57 191 226.1 120 908Percentage of the requests served within a certain time (ms) 50% 120 66% 126 75% 137 80% 158 90% 830 95% 846 98% 906 99% 908 100% 908 (longest request)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [~]# ab -c 10 -n 100 http://wp.p-host.in/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking wp.p-host.in (be patient).....done
Server Software: nginx/1.10.1 Server Hostname: wp.p-host.in Server Port: 80
Document Path: / Document Length: 49297 bytes
Concurrency Level: 10 Time taken for tests: 1.958 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 4953200 bytes HTML transferred: 4929700 bytes Requests per second: 51.08 [#/sec] (mean) Time per request: 195.783 [ms] (mean) Time per request: 19.578 [ms] (mean, across all concurrent requests) Transfer rate: 2470.65 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 57 191 226.1 120 908 Waiting: 56 189 226.0 117 908 Total: 57 191 226.1 120 908
Percentage of the requests served within a certain time (ms) 50% 120 66% 126 75% 137 80% 158 90% 830 95% 846 98% 906 99% 908 100% 908 (longest request) |
Небольшой итог тестирования WordPress: производительность PHP 7.1 осталась на уровне PHP 7.0, но также значительно выше производительности PHP 5.6.
Следующей тестируемой CMS будет Joomla 3.6.5:
Версия PHP 5.6:
[~]# ab -c 10 -n 100 http://jm.p-host.in/This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking jm.p-host.in (be patient).....doneServer Software: nginx/1.10.1Server Hostname: jm.p-host.inServer Port: 80Document Path: /Document Length: 10453 bytesConcurrency Level: 10Time taken for tests: 4.795 secondsComplete requests: 100Failed requests: 0Write errors: 0Total transferred: 1090400 bytesHTML transferred: 1045300 bytesRequests per second: 20.86 [#/sec] (mean)Time per request: 479.499 [ms] (mean)Time per request: 47.950 [ms] (mean, across all concurrent requests)Transfer rate: 222.07 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.0 0 0Processing: 195 467 218.0 401 1077Waiting: 195 467 218.0 401 1077Total: 195 467 218.0 401 1077Percentage of the requests served within a certain time (ms) 50% 401 66% 512 75% 569 80% 601 90% 884 95% 922 98% 1042 99% 1077 100% 1077 (longest request)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [~]# ab -c 10 -n 100 http://jm.p-host.in/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking jm.p-host.in (be patient).....done
Server Software: nginx/1.10.1 Server Hostname: jm.p-host.in Server Port: 80
Document Path: / Document Length: 10453 bytes
Concurrency Level: 10 Time taken for tests: 4.795 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1090400 bytes HTML transferred: 1045300 bytes Requests per second: 20.86 [#/sec] (mean) Time per request: 479.499 [ms] (mean) Time per request: 47.950 [ms] (mean, across all concurrent requests) Transfer rate: 222.07 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 195 467 218.0 401 1077 Waiting: 195 467 218.0 401 1077 Total: 195 467 218.0 401 1077
Percentage of the requests served within a certain time (ms) 50% 401 66% 512 75% 569 80% 601 90% 884 95% 922 98% 1042 99% 1077 100% 1077 (longest request) |
Версия PHP 7.0:
[~]# ab -c 10 -n 100 http://jm.p-host.in/This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking jm.p-host.in (be patient).....doneServer Software: nginx/1.10.1Server Hostname: jm.p-host.inServer Port: 80Document Path: /Document Length: 10453 bytesConcurrency Level: 10Time taken for tests: 2.961 secondsComplete requests: 100Failed requests: 0Write errors: 0Total transferred: 1090400 bytesHTML transferred: 1045300 bytesRequests per second: 33.77 [#/sec] (mean)Time per request: 296.133 [ms] (mean)Time per request: 29.613 [ms] (mean, across all concurrent requests)Transfer rate: 359.58 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.2 0 1Processing: 92 291 189.6 217 776Waiting: 92 291 189.5 217 776Total: 92 291 189.7 217 777Percentage of the requests served within a certain time (ms) 50% 217 66% 286 75% 400 80% 436 90% 667 95% 709 98% 768 99% 777 100% 777 (longest request)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [~]# ab -c 10 -n 100 http://jm.p-host.in/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking jm.p-host.in (be patient).....done
Server Software: nginx/1.10.1 Server Hostname: jm.p-host.in Server Port: 80
Document Path: / Document Length: 10453 bytes
Concurrency Level: 10 Time taken for tests: 2.961 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1090400 bytes HTML transferred: 1045300 bytes Requests per second: 33.77 [#/sec] (mean) Time per request: 296.133 [ms] (mean) Time per request: 29.613 [ms] (mean, across all concurrent requests) Transfer rate: 359.58 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.2 0 1 Processing: 92 291 189.6 217 776 Waiting: 92 291 189.5 217 776 Total: 92 291 189.7 217 777
Percentage of the requests served within a certain time (ms) 50% 217 66% 286 75% 400 80% 436 90% 667 95% 709 98% 768 99% 777 100% 777 (longest request) |
Версия PHP 7.1:
[~]# ab -c 10 -n 100 http://jm.p-host.in/This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking jm.p-host.in (be patient).....doneServer Software: nginx/1.10.1Server Hostname: jm.p-host.inServer Port: 80Document Path: /Document Length: 10453 bytesConcurrency Level: 10Time taken for tests: 2.752 secondsComplete requests: 100Failed requests: 0Write errors: 0Total transferred: 1090400 bytesHTML transferred: 1045300 bytesRequests per second: 36.34 [#/sec] (mean)Time per request: 275.190 [ms] (mean)Time per request: 27.519 [ms] (mean, across all concurrent requests)Transfer rate: 386.95 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 0Processing: 76 264 171.5 214 813Waiting: 76 264 171.5 214 813Total: 77 264 171.5 214 813Percentage of the requests served within a certain time (ms) 50% 214 66% 245 75% 290 80% 306 90% 703 95% 722 98% 801 99% 813 100% 813 (longest request)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [~]# ab -c 10 -n 100 http://jm.p-host.in/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking jm.p-host.in (be patient).....done
Server Software: nginx/1.10.1 Server Hostname: jm.p-host.in Server Port: 80
Document Path: / Document Length: 10453 bytes
Concurrency Level: 10 Time taken for tests: 2.752 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1090400 bytes HTML transferred: 1045300 bytes Requests per second: 36.34 [#/sec] (mean) Time per request: 275.190 [ms] (mean) Time per request: 27.519 [ms] (mean, across all concurrent requests) Transfer rate: 386.95 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 0 Processing: 76 264 171.5 214 813 Waiting: 76 264 171.5 214 813 Total: 77 264 171.5 214 813
Percentage of the requests served within a certain time (ms) 50% 214 66% 245 75% 290 80% 306 90% 703 95% 722 98% 801 99% 813 100% 813 (longest request) |
Небольшой итог тестирования Joomla: производительность PHP 7.1 осталась на уровне PHP 7.0, как это было и при тестировании WordPress. Стоит отметить, что скорость работы сайта на данной CMS на 28% ниже, чем скорость работы сайта на WordPress.
В завершении этой статьи мы протестируем сайт на базе Drupal 8.2.3:
Версия PHP 5.6:
[~]# ab -c 10 -n 100 http://dr.p-host.in/This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking dr.p-host.in (be patient).....doneServer Software: nginx/1.10.1Server Hostname: dr.p-host.inServer Port: 80Document Path: /Document Length: 9145 bytesConcurrency Level: 10Time taken for tests: 1.286 secondsComplete requests: 100Failed requests: 0Write errors: 0Total transferred: 961500 bytesHTML transferred: 914500 bytesRequests per second: 77.75 [#/sec] (mean)Time per request: 128.618 [ms] (mean)Time per request: 12.862 [ms] (mean, across all concurrent requests)Transfer rate: 730.04 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.0 0 0Processing: 29 125 186.4 64 701Waiting: 29 125 186.5 63 701Total: 29 126 186.5 64 701Percentage of the requests served within a certain time (ms) 50% 64 66% 74 75% 81 80% 87 90% 666 95% 675 98% 698 99% 701 100% 701 (longest request)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [~]# ab -c 10 -n 100 http://dr.p-host.in/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking dr.p-host.in (be patient).....done
Server Software: nginx/1.10.1 Server Hostname: dr.p-host.in Server Port: 80
Document Path: / Document Length: 9145 bytes
Concurrency Level: 10 Time taken for tests: 1.286 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 961500 bytes HTML transferred: 914500 bytes Requests per second: 77.75 [#/sec] (mean) Time per request: 128.618 [ms] (mean) Time per request: 12.862 [ms] (mean, across all concurrent requests) Transfer rate: 730.04 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 29 125 186.4 64 701 Waiting: 29 125 186.5 63 701 Total: 29 126 186.5 64 701
Percentage of the requests served within a certain time (ms) 50% 64 66% 74 75% 81 80% 87 90% 666 95% 675 98% 698 99% 701 100% 701 (longest request) |
Версия PHP 7.0:
[~]# ab -c 10 -n 100 http://dr.p-host.in/This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking dr.p-host.in (be patient).....doneServer Software: nginx/1.10.1Server Hostname: dr.p-host.inServer Port: 80Document Path: /Document Length: 9145 bytesConcurrency Level: 10Time taken for tests: 1.293 secondsComplete requests: 100Failed requests: 0Write errors: 0Total transferred: 961500 bytesHTML transferred: 914500 bytesRequests per second: 77.32 [#/sec] (mean)Time per request: 129.328 [ms] (mean)Time per request: 12.933 [ms] (mean, across all concurrent requests)Transfer rate: 726.04 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.1 0 0Processing: 26 127 162.4 69 634Waiting: 26 127 162.3 69 634Total: 26 127 162.4 69 635Percentage of the requests served within a certain time (ms) 50% 69 66% 87 75% 110 80% 129 90% 582 95% 590 98% 635 99% 635 100% 635 (longest request)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [~]# ab -c 10 -n 100 http://dr.p-host.in/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking dr.p-host.in (be patient).....done
Server Software: nginx/1.10.1 Server Hostname: dr.p-host.in Server Port: 80
Document Path: / Document Length: 9145 bytes
Concurrency Level: 10 Time taken for tests: 1.293 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 961500 bytes HTML transferred: 914500 bytes Requests per second: 77.32 [#/sec] (mean) Time per request: 129.328 [ms] (mean) Time per request: 12.933 [ms] (mean, across all concurrent requests) Transfer rate: 726.04 [Kbytes/sec] received
Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 0 Processing: 26 127 162.4 69 634 Waiting: 26 127 162.3 69 634 Total: 26 127 162.4 69 635
Percentage of the requests served within a certain time (ms) 50% 69 66% 87 75% 110 80% 129 90% 582 95% 590 98% 635 99% 635 100% 635 (longest request) |
Версия PHP 7.1:
[~]# ab -c 10 -n 100 http://dr.p-host.in/This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking dr.p-host.in (be patient).....doneServer Software: nginx/1.10.1Server Hostname: dr.p-host.inServer Port: 80Document Path: /Document Length: 9145 bytesConcurrency Level: 10Time taken for tests: 0.686 secondsComplete requests: 100Failed requests: 0Write errors: 0Total transferred: 961500 bytesHTML transferred: 914500 bytesRequests per second: 145.70 [#/sec] (mean)Time per request: 68.633 [ms] (mean)Time per request: 6.863 [ms] (mean, across all concurrent requests)Transfer rate: 1368.10 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 0 0 0.5 0 5Processing: 16 63 24.1 59 148Waiting: 16 63 24.3 59 148Total: 17 64 24.1 59 148Percentage of the requests served within a certain time (ms) 50% 59 66% 69 75% 74 80% 80 90% 97 95% 119 98% 130 99% 148 100% 148 (longest request)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | [~]# ab -c 10 -n 100 http://dr.p-host.in/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking dr.p-host.in (be patient).....done
Server Software: nginx/1.10.1 Server Hostname: dr.p-host.in Server Port: 80
Document Path: / Document Length: 9145 bytes
Concurrency Level: 10 Time taken for tests: 0.686 seconds Complete requests: |
lite.host
Как проверить совместимость тем и плагинов WordPress с PHP 7
Получив в панели вашего хостинга предупреждение об использовании устаревшей версии PHP — не спешите менять на более новую. Сперва проверьте, поддерживают ли ваши темы и плагины WordPress новую версию PHP.
В новых версиях PHP какие-то функции добавляются, а какие-то вообще перестают существовать. Если в используемом плагине или теме применяются несуществующие в новой версии PHP функции или методы — это приведет к ошибке и может нарушить работу сайта в целом.
Скорость работы скриптов на PHP 7, по сравнению с предыдущими версиями, возросла почти в два раза.
1. Создаем бэкап сайта. 2. Устанавливаем и активируем плагин PHP Compatibility Checker 3. В админ-панели WordPress переходим Инструменты — PHP Compatibility.- Здесь можно выбрать опции:
- версию PHP с которой будем проверять на совместимость;
- проверять все установленные плагины и темы или только активные.
- В идеале все должно быть зеленым, но разберем подробнее:
- Первая строчка это совместимость самой темы WordPress. В моем случае это тема Jarida, она довольно старая и давно не обновлялась. Есть одна ошибка и целых 36 предупреждении. На свой страх и риск я обновил PHP до версии 7.2 и ничего плохого не произошло. Возможно потенциальная ошибка связана с функциями которые я не использую (типа WooCommerce).
- Плагин Ad Inserter проверить не удалось, в подробном отчете видно что сервер отказал в связи с большой нагрузкой при проверке.
- Плагин WP Keys имеет одну ошибку, но исправить я ничего не могу (плагин уже не поддерживается). Но по факту плагин работает на PHP 7.2 — тщательное тестирование не выявило никаких проблем.
siteask.ru
Исчерпывающие бенчмарки PHP 5.6, 7.0, 7.1, 7.2 и HHVM (2018) / Блог компании Mail.Ru Group / Хабр
Каждый год мы стараемся тщательно измерять производительность разных версий PHP и HHVM на различных платформах. В этом году мы измерили четыре версии PHP и HHVM на 20 платформах/конфигурациях, включая WordPress, Drupal, Joomla!, Laravel, Symfony и многие другие. Также мы протестировали популярные решения для электронной коммерции вроде WooCommerce, Easy Digital Downloads, Magento and PrestaShop.
Мы всегда рекомендовали пользователям WordPress не пренебрегать преимуществами свежайших поддерживаемых версий PHP. Не только ради безопасности, но и ради повышения производительности. Причём речь идёт не только о WordPress, это по большей части справедливо для всех платформ. И сегодня мы продемонстрируем, как PHP 7.2 одерживает сокрушительную победу!
В этом году результаты бенчмарков очень сильно отличаются от прошлогодних, когда победителем стал HHVM. Нас впечатлило, что PHP 7.2 вырвался в лидеры по скорости работы. Нужно отметить, что применительно к WordPress HHVM больше не поддерживается и будет постепенно сходить со сцены. Мы больше не рекомендуем своим клиентам переходить на HHVM и отмечаем, что его поддержка другими платформами также снизилась.
Это хорошие новости для разработчиков и конечных пользователей, поскольку теперь можно сосредоточиться на PHP и создавать более быстрые сайты и веб-сервисы.
Мы протестировали 20+ платформ/конфигураций с пятью разными движками, и PHP 7.2 завоевал золотую медаль с результатом 14/20!
Бенчмарки PHP и HHVM (2018)
Для каждого теста мы брали последнюю версию каждой платформы и в течение минуты измеряли работу главной страницы с 15 одновременными пользователями. Тестовый стенд:
- Машина: 8x Intel® Xeon® CPU, 2,20 ГГц (работала в Google Cloud Platform и исполнялась в изолированном контейнере)
- ОС: Ubuntu 16.04.3 LTS
- Стек Docker: Debian 8, Nginx 1.13.8, MariaDB 10.1.31
- Движки PHP: 5.6, 7.0, 7.1, 7.2
- HHVM: 3.24.2
- OPCache: для WordPress, Joomla и Drupal мы использовали официальный образ Docker. Для остальных — тот же образ с включённым OPCache и рекомендованными настройками php.ini.
Тесты выполнял Торик Фирдаус (Thoriq Firdaus), один из разработчиков WordPress и инженер поддержки в Kinsta. Торик участвовал в создании WordPress Core и редактора локализации WordPress для Индонезии.
Что такое PHP?
PHP — это гипертекстовый препроцессор. Сегодня это один из самых популярных скриптовых языков в сети. Согласно W3Techs, PHP применяется на 83 % сайтов, использующих языки программирования на стороне сервера.
Что такое HHVM?
Из-за проблем с производительностью PHP команда Facebook разработала HipHop Virtual Machine (HHVM). Это система, использующая JIT-компиляцию (just-in-time) для преобразования PHP-кода в машинный код ради синергии PHP и железа, на котором этот код исполняется.
Протестированные платформы и конфигурации
Мы протестировали 20 платформ/конфигураций. В некоторых случаях из-за отсутствия поддержки конкретной версии PHP пришлось протестировать по несколько версий. Все измерения — количество запросов в секунду. Чем больше значения, тем лучше.
WordPress 4.9.4
Первой протестированной платформой стал, конечно же, наш любимый WordPress (возможно, мы немного предвзяты, поскольку ежедневно живём этой CMS). По сути, WordPress — ПО с открытым исходным кодом, которое можно использовать для создания прекрасных сайтов, блогов или приложений. Сегодня на WordPress приходится около 29 % всех сайтов в интернете, то есть более четверти.
Для измерения производительности WordPress мы использовали бесплатную тему Twenty Seventeen. Для заполнения взяли фальшивый контент из wptest.io и в течение минуты тестировали главную страницу, которую одновременно просматривают 15 пользователей.
Результаты бенчмарков
- WordPress 4.9.4 PHP 5.6: 49,18 запроса в секунду
- WordPress 4.9.4 PHP 7.0: 133,55 запроса в секунду
- WordPress 4.9.4 PHP 7.1: 134,24 запроса в секунду
- WordPress 4.9.4 PHP 7.2: 148,8 запроса в секунду
- WordPress 4.9.4 HHVM: 144,76 запроса в секунду
Победил PHP 7.2, он оказался чуть быстрее HHVM. Это важная перемена по сравнению с бенчмарками 2016 года, когда однозначным победителем был HHVM. Кроме того, PHP для WordPress работает гораздо стабильнее. Мы сами сталкивались с многочисленными проблемами при эксплуатации HHVM. А если сравнить PHP 7.2 с PHP 5.6, то разница в производительности оказывается трёхкратной!
WordPress 4.9.4 + WooCommerce 3.3.1
WooCommerce — полностью кастомизируемая open-source платформа на основе WordPress. К тому же это одно из самых популярных решений для электронной коммерции, на нём работает свыше 42 % всех коммерческих сайтов.
Для этого теста мы взяли WordPress с установленным WooCommerce и бесплатной темой Storefront eCommerce.
Результаты бенчмарков
- WordPress 4.9.4 + WooCommerce 3.3.1 PHP 5.6: 34,47 запроса в секунду
- WordPress 4.9.4 + WooCommerce 3.3.1 PHP 7.0: 84,89 запроса в секунду
- WordPress 4.9.4 + WooCommerce 3.3.1 PHP 7.1: 86,04 запроса в секунду
- WordPress 4.9.4 + WooCommerce 3.3.1 PHP 7.2: 92,6 запроса в секунду
- WordPress 4.9.4 + WooCommerce 3.3.1 HHVM: 69,58 запроса в секунду
WooCommerce с трудом работал с HHVM, а PHP 7.2 победил PHP 7.1 с небольшим преимуществом.
WordPress 4.9.4 + Easy Digital Downloads 2.8.18
Easy Digital Downloads (EDD) создал Пипин Уильямсон (Pippin Williamson). Это бесплатный WordPress-плагин, помогающий авторам и разработчикам продавать цифровые продукты.
Посмотрев, как работает WooCommerce, мы протестировали WordPress с одним лишь установленным Easy Digital Downloads. Использовалась бесплатная тема EDD Starter Theme.
- Количество товаров: 6 (товары по умолчанию из самого плагина).
- Две картинки в списке продуктов отсутствуют.
Образ Docker взят из https://hub.docker.com/_/wordpress/
WordPress + Easy Digital Downloads
Результаты бенчмарков
- WordPress 4.9.4 + EDD 2.8.18 PHP 5.6: 76,71 запроса в секунду
- WordPress 4.9.4 + EDD 2.8.18 PHP 7.0: 123,83 запроса в секунду
- WordPress 4.9.4 + EDD 2.8.18 PHP 7.1: 124,82 запроса в секунду
- WordPress 4.9.4 + EDD 2.8.18 PHP 7.2: 135,74 запроса в секунду
- WordPress 4.9.4 + EDD 2.8.18 HHVM: 127,74 запроса в секунду
PHP 7.2 доминирует.
Drupal 8.4.4
Drupal — open-source CMS, заслужившая популярность благодаря модульной системе и сильному сообществу разработчиков. Она появилась в 2000-м и, согласно W3Techs, используется примерно на 2,2 % всех сайтов, занимая 4,4 % рынка CMS.
Мы использовали бесплатную тему Bartik 8.4.4. Отметим, что Drupal 8.4.x несовместима с PHP 7.2 (#2932574), поэтому движок мы не тестировали.
Drupal
Результаты бенчмарков
- Drupal 8.4.4 PHP 5.6: 7,05 запроса в секунду
- Drupal 8.4.4 PHP 7.0: 15,94 запроса в секунду
- Drupal 8.4.4 PHP 7.1: 19,15 запроса в секунду
- Drupal 8.4.4 PHP 7.2: не поддерживается
- Drupal 8.4.4 HHVM: 19,57 запроса в секунду
Поскольку последняя версия Drupal не поддерживает PHP 7.2, победителем стал HHVM. Хотя если посмотреть на улучшения производительности в предыдущих версиях PHP, то можно смело предположить, что 7.2 работал бы ещё быстрее.
Joomla! 3.8.5
Joomla! — бесплатная CMS с открытым исходным кодом для публикации контента. Она впервые вышла в августе 2005-го. Joomla! построена на основе фреймворка для веб-приложений по схеме «модель-представление-контроллер» и, согласно W3Techs, используется на 3,1 % всех сайтов в интернете.
Для тестирования Joomla мы использовали бесплатный шаблон Beez3.
- Количество публикаций: 4 (добавленные при установке образцы публикаций по умолчанию)
- Панели по умолчанию не использованы.
- Образ Docker взят из https://hub.docker.com/_/joomla/
Joomla!
Результаты бенчмарков
- Joomla! 3.8.5 PHP 5.6: 26,42 запроса в секунду
- Joomla! 3.8.5 PHP 7.0: 41,46 запроса в секунду
- Joomla! 3.8.5 PHP 7.1: 41,17 запроса в секунду
- Joomla! 3.8.5 PHP 7.2: 42,36 запроса в секунду
- Joomla! 3.8.5 HHVM: 51,84 запроса в секунду
На примере Joomla мы видим стабильный рост производительности PHP от версии к версии. Но HHVM всё ещё лидирует.
Magento 2 (CE) 2.1.11 + 2.2.2
Magento — популярная open-source платформа, написанная на PHP. Она появилась в марте 2008-го. Согласно W3Techs, Magento работает на 1,2 % всех сайтов.
Для тестирования Magento 2 benchmark мы использовали бесплатную тему Luma. Поскольку PHP 5.6 поддерживался только версией 2.1.11, нам пришлось прогонять бенчмарки на двух версиях Magento. Мы установили её с образцами данных и темой, идущими в комплекте. Для дополнительного тестирования использовали версию 2.2.2. Magento 2 пока не поддерживает PHP 7.2 и последнюю версию HHVM.
Magento 2
Результаты бенчмарков
- Magento 2 (CE) 2.1.11 PHP 5.6: 10,75 запроса в секунду
- Magento 2 (CE) 2.1.11 PHP 7.0: 20,87 запроса в секунду
- Magento 2 (CE) 2.1.11 PHP 7.1: 29,84 запроса в секунду
- Magento 2 (CE) 2.1.11 PHP 7.2: не поддерживается
- Magento 2 (CE) 2.1.11 HHVM: не поддерживается
Поскольку Magento 2 не поддерживает PHP 7.2 и последнюю версию HHVM, победителем стал PHP 7.1. Впечатляет рост производительности от версии к версии.
Grav CMS 1.3.10
Grav — простая, но мощная open-source CMS, которой не требуется база данных. Её ещё иногда называют «CMS на основе неструктурированных файлов (flat-file)».
Мы использовали бесплатный пакет Clean Blog. Обратите внимание, Grav CMS больше не совместима с компилятором HHVM, а из сборки Travis удалена среда HHVM.
- Количество публикаций: 4 (предустановленные образцы в Clean Blog)
Выключено кеширование страниц и файлов https://learn.getgrav.org/advanced/performance-and-caching, кеширование Twig работает.
Grav CMS
Результаты бенчмарков
- Grav CMS 1.3.10 PHP 5.6: 34,83 запроса в секунду
- Grav CMS 1.3.10 PHP 7.0: 53,37 запроса в секунду
- Grav CMS 1.3.10 PHP 7.1: 53,37 запроса в секунду
- Grav CMS 1.3.10 PHP 7.2: 55,12 запроса в секунду
- Grav CMS 1.3.10 HHVM: не поддерживается
PHP 7.2 снова одержал убедительную победу.
October CMS 1.0.433
October CMS — бесплатная open-source модульная CMS-платформа с собственным сервером, построенная на базе PHP-фреймворка Laravel. Впервые она вышла в мае 2014-го.
Мы использовали бесплатную тему Clean Blog. October CMS больше не совместима с PHP 5.6 и HHVM. И хотя мы cмогли обмануть инсталлятор, убрав проверку PHP, мастер конфигурирования вылетел с ошибкой 500.
Результаты бенчмарков
- October CMS 1.0.433 PHP 5.6: не поддерживается
- October CMS 1.0.433 PHP 7.0: 43,83 запроса в секунду
- October CMS 1.0.433 PHP 7.1: 47,95 запроса в секунду
- October CMS 1.0.433 PHP 7.2: 48,87 запроса в секунду
- October CMS 1.0.433 HHVM: не поддерживается
Два движка не поддерживаются, однако PHP 7.2 снова победил.
Приятно, что все эти не столь крупные CMS отказываются от поддержки старых версий PHP. Это одно из преимуществ, свойственных не слишком большим продуктам. К сожалению, когда речь заходит о WordPress и прочих платформах с большими долями рынка, прогресс замедляется из-за соображений обратной совместимости.
Laravel 5.4.36 + 5.6
Laravel — очень популярный open-source PHP-фреймворк, использующийся для создания веб-приложений. Он был разработан Тейлором Отвеллом (Taylor Otwell) и выпущен в июне 2011-го.
В этом тестировании мы использовали чистую HTML-тему. Тесты были прогнаны несколько раз, взято среднеарифметическое. Подробности можно найти здесь.
- Количество публикаций: 10, с циклом Blade
- База данных содержит одну таблицу posts
- Таблица содержит шесть колонок post_title, post_content, post_author, created_at и updated_at.
- Сессии отключены.
Перед бенчмарками выполнены команды composer dump-autoload –classmap-authoritative, php artisan optimize –force, php artisan config:cache, php artisan route:cache.
Laravel 5.4.36
Результаты бенчмарков
- Laravel 5.4.36 PHP 5.6: 66,57 запроса в секунду
- Laravel 5.4.36 PHP 7.0: 114,55 запроса в секунду
- Laravel 5.4.36 PHP 7.1: 113,26 запроса в секунду
- Laravel 5.4.36 PHP 7.2: 114,04 запроса в секунду
- Laravel 5.4.36 HHVM: 394,31 запроса в секунду
HHVM — несомненный победитель.
Laravel 5.6 несовместим с HHVM и требует PHP 7.1 или выше.
Laravel 5.6
Результаты бенчмарков
- Laravel 5.6 PHP 5.6: не поддерживается
- Laravel 5.6 PHP 7.0: не поддерживается
- Laravel 5.6 PHP 7.1: 411,39 запроса в секунду
- Laravel 5.6 PHP 7.2: 442,17 запроса в секунду
- Laravel 5.6 HHVM: не поддерживается
Поразительная разница между результатами Laravel 5.6 PHP 7.2 и Laravel 5.4.36! Последние версии PHP явно пошли на пользу Laravel.
Symfony 3.3.6 + 4.0.1
Symfony — это набор многократно используемых PHP-компонентов и PHP-фреймворк для создания веб-приложений, API, микросервисов и веб-сервисов. Он вышел в октябре 2005-го.
Здесь мы использовали Symfony Demo с MySQL (по умолчанию используется SQLite). Тесты проведены несколько раз, взято среднеарифметическое. HHVM выкидывал ошибку 500. Подробности можно почитать здесь.
Результаты бенчмарков
- Symfony 3.3.6 PHP 5.6: 81,78 запроса в секунду
- Symfony 3.3.6 PHP 7.0: 184,15 запроса в секунду
- Symfony 3.3.6 PHP 7.1: 187,6 запроса в секунду
- Symfony 3.3.6 PHP 7.2: 196,94 запроса в секунду
- Symfony 3.3.6 HHVM: не поддерживается
PHP 7.2 снова победил!
Symfony 4.0.1 требуется PHP 7.1 или выше. И снова HHVM выкидывал ошибку 500.
Результаты бенчмарков
- Symfony 4.0.1 PHP 5.6: не поддерживается
- Symfony 4.0.1 PHP 7.0: не поддерживается
- Symfony 4.0.1 PHP 7.1: 188,12 запроса в секунду
- Symfony 4.0.1 PHP 7.2: 197,17 запроса в секунду
- Symfony 4.0.1 HHVM: не поддерживается
PHP 7.2 опять царь горы.
PyroCMS 3.4.14
PyroCMS — open-source расширение для Laravel, ускоряющее создание сайтов и приложений с помощью этого фреймворка.
Мы использовали бесплатную тему Accelerant Theme (идёт по умолчанию в PyroCMS). PyroCMS не работает в HHVM, вероятно, из-за Laravel.
Результаты бенчмарков
- PyroCMS 3.4.14 PHP 5.6: не поддерживается
- PyroCMS 3.4.14 PHP 7.0: 27,33 запроса в секунду
- PyroCMS 3.4.14 PHP 7.1: 27,81 запроса в секунду
- PyroCMS 3.4.14 PHP 7.2: 29,28 запроса в секунду
- PyroCMS 3.4.14 HHVM: не поддерживается
Результаты близки к PyroCMS, но PHP 7.2 опять был лучшим.
Pagekit 1.0.13
Pagekit — лёгкая модульная open-source CMS, позволяющая создавать прекрасные сайты. Она вышла весной 2016-го.
Мы использовали бесплатную тему One (идёт в Pagekit по умолчанию).
Результаты бенчмарков
- Pagekit 1.0.13 PHP 5.6: 51,7 запроса в секунду
- Pagekit 1.0.13 PHP 7.0: 108,61 запроса в секунду
- Pagekit 1.0.13 PHP 7.1: 112,3 запроса в секунду
- Pagekit 1.0.13 PHP 7.2: 116,18 запроса в секунду
- Pagekit 1.0.13 HHVM: 61,16 запроса в секунду
Pagekit с трудом работал с HHVM. PHP 7.2 — безусловный победитель.
Bolt CMS 3.4.8
Bolt — это open-source инструмент управления контентом, который авторы стараются сделать как можно проще. Он построен на основе компонентов Silex и Symfony, использует Twig, а также SQLite, MySQL или PostgreSQL.
Мы использовали бесплатную тему Bolt Base 2016. HHVM не поддерживается (#6921).
Результаты бенчмарков
- Bolt CMS 3.4.8 PHP 5.6: 33,45 запроса в секунду
- Bolt CMS 3.4.8 PHP 7.0: 60,21 запроса в секунду
- Bolt CMS 3.4.8 PHP 7.1: 67,96 запроса в секунду
- Bolt CMS 3.4.8 PHP 7.2: 72,05 запроса в секунду
- Bolt CMS 3.4.8 HHVM: не поддерживается
Хорошо видно, что с каждой новой версией PHP производительность Bolt CMS растёт.
Anchor CMS 0.12.6 (pre-release)
Anchor — очень простая и компактная open-source система для ведения блогов.
Мы использовали бесплатную тему Default Theme.
Результаты бенчмарков
- Anchor CMS 0.12.6 PHP 5.6: 495,33 запроса в секунду
- Anchor CMS 0.12.6 PHP 7.0: 546,02 запроса в секунду
- Anchor CMS 0.12.6 PHP 7.1: 565 запросов в секунду
- Anchor CMS 0.12.6 PHP 7.2: 561,73 запроса в секунду
- Anchor CMS 0.12.6 HHVM: 487,71 запроса в секунду
Результаты PHP 7.1 и PHP 7.2 очень близки, но PHP 7.1 оказался чуть быстрее.
PrestaShop 1.7.2.4
PrestaShop — популярное и очень быстро развивающееся open-source решение для интернет-магазинов. Первая версия вышла в 2008-м, и, согласно W3Techs, PrestaShop используется на 0,6 % всех сайтов.
Мы взяли бесплатную тему Classic Theme. PrestaShop не поддерживает HHVM.
Результаты бенчмарков
- Prestashop 1.7.2.4 PHP 5.6: 61,96 запроса в секунду
- Prestashop 1.7.2.4 PHP 7.0: 108,34 запроса в секунду
- Prestashop 1.7.2.4 PHP 7.1: 111,38 запроса в секунду
- Prestashop 1.7.2.4 PHP 7.2: 111,48 запроса в секунду
- Prestashop 1.7.2.4 HHVM: не поддерживается
Результаты почти одинаковые, но PHP 7.2 на полноздри вырвался вперёд.
Craft CMS 2.6.3011
Craft CMS — продукт для разработчиков, дизайнеров и веб-специалистов, отличающийся гибкостью применения, широкими возможностями и простой использования.
Мы взяли бесплатную тему по умолчанию.
Результаты бенчмарков
- Craft CMS 2.6.3011 PHP 5.6: 131,04 запроса в секунду
- Craft CMS 2.6.3011 PHP 7.0: 266,54 запроса в секунду
- Craft CMS 2.6.3011 PHP 7.1: 272,14 запроса в секунду
- Craft CMS 2.6.3011 PHP 7.2: 280,02 запроса в секунду
- Craft CMS 2.6.3011 HHVM: 26,28 запроса в секунду
Craft CMS плохо работает с HHVM. Но зато PHP 7.2 опять на коне!
Fork CMS 5.2.2
Fork — простая open-source CMS, в которой применяются компоненты Symfony. Здесь мы использовали бесплатную тему, идущую по умолчанию, Fork Theme. Fork CMS требуется PHP 7.1 или выше, она не поддерживает HHVM.
Результаты бенчмарков
- Fork CMS 5.2.2 PHP 5.6: не поддерживается
- Fork CMS 5.2.2 PHP 7.0: не поддерживается
- Fork CMS 5.2.2 PHP 7.1: 10,68 запроса в секунду
- Fork CMS 5.2.2 PHP 7.2: 12,83 запроса в секунду
- Fork CMS 5.2.2 HHVM: не поддерживается
PHP 7.2 превзошёл по производительности PHP 7.1.
Мы в Kinsta перешли на PHP 7.2
Если эти результаты вас не убедили, то мы уж и не знаем, что вас вообще убедит. Просто дружеское напоминание, если вы клиент Kinsta: мы выпустили PHP 7.2 в декабре 2017-го. Если вам нужно увеличить производительность, можете легко перейти на PHP 7.2 одним кликом в панели MyKinsta.
Если вас беспокоит несовместимость со сторонними плагинами (это возможно), то именно для этого нужны площадки для стейджинга. Можете потестировать без риска для вашего production-сайта.
Впечатления от результатов бенчмарков
Как видите, PHP 7.2 по производительности лидирует на всех платформах.
- PHP 7.2 оказался самым быстрым движком в 14 из 20 конфигураций. Ещё две конфигурации (Drupal и Magento) пока не поддерживают PHP 7.2, так что результат вполне мог быть 16/20.
- Применительно к WordPress PHP 7.2 был самым быстрым во всех тестах (стоковый сайт WordPress, WooCommerce и Easy Digital Downloads).
- На примере многих результатов можно отметить рост производительности PHP от версии к версии. Поэтому так важно тестировать свой сайт, плагины и прочее и регулярно обновлять движок. Это пойдёт на пользу вашим посетителям и клиентам!
- Если ваш хостинг-провайдер не предлагает новые версии PHP, возможно, пора переезжать.
habr.com