PHP7 и его совместимость с плагинами WordPress

Дата публикации:Сентябрь 14, 2015

php7

Если вы читали новости о 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. Возможно, это было сделано потому, что плагин действительно очень простой. Вот цитата из журнала изменений:

php7-compatible

Если плагины работают и платформа 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

Поделиться

Один комментарий

  1. Андрей says:

    WordPress Related Posts — у меня выдает ошибку, но работает. Надеюсь обновят плагин и будет все улажено под php7, а то не хочется откатываться на 5.5

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.