Upload
vovasik
View
207
Download
2
Embed Size (px)
Citation preview
Как быть с большими сайтами на
WordPress
Petrozavodsky
Интернет журнал BroDude
Владимир
Twitter @petrozavodsky
https://alkoweb.ru
Руководитель отдела разработки BroDude
WordPress не религия !
Это всего лишь CMS
И это только РоссияВ мире популярность WordPressтрадиционно выше
Достаточно графика
P.S. Drupal красный, остальные популярные CMS тоже есть на этом графике.
https://goo.gl/CH8sZY
Большой ли у меняСайт ?
Высокая посещаемость с чего начать ?
Этот путь пройден до нас1. Nginx + php5-fpm.2. Object cache, memcached.3. wordpress pages cache4. Многосерверные и распределённые архитектуры
Оптимизировать код
1. autoload в add_option()2. orderby => rand в SQL3. режимы wp-cron4. wp_remote_get , curl запросы
В чем интрига доклада???
Большой или
посещаемый ?
Поддержка больших сайтов
Проблемы:
- Баги;- Отсутствие обновлений;- Legacy code; - Уязвимости.
Безопасный деплоймент
Откажитесь от FTPПочему ?
- Открытый трафик, снифферы, перехват пароля по сети
- Кража паролей из FTP клиента- Забытые пароли- Медленная скорость - Проблемы с параллельной правкой - Ошибки в продакшене
На этом о деплое всё!
WP-CLI
- php в bash - обработка больших данных - автоматизация - лёгкая разработка с WP-CLI
http://wp-cli.org/
Аналог drush в Drupal
Переписываем частями● Шаблон, (в 90% случаев это необходимо). ● Самописные и «хакнутые» плагины.● Делаем так, чтобы обновления до последней версии не ломали сайт.● Тестируем на копии сайта с реальными данными. ● Обновляем, «вендорные» плагины, шаблоны до последней версии.● Сравниваем код ядра с соответствующей версией из архива релизов
https://ru.wordpress.org/releases/ если различий нет, то обновляемся до последней версии; если есть, убираем «хаки» из кода ядра и обновляемся до актуальной версии.
Объектно-ориентированное программирование
- инкапсуляция; - переиспользование;- скорость разработки выше;- безопасность.
ПлагиныОчень просто начать писать плагины
Можно уложиться менее чем в 20 строк
Структура проектатакже простая, может состоять из одного файла
Почему нужно писать именно так?Проблема именования функций Область видимости класса позволяет
решить проблему, инкапсулируя код.
Инициализация кода в момент хука plugins_loaded
Почти весь любой функционал можно реализовать в момент этого хука либо позже.
ООП наследование, переиспользование и т.д.
Писать в объектно-ориентированном стиле приятно и легко.
Одинаковая структура проектов делает возможной оптимизацию
Стандартная структура плагинов облегчает обслуживание, деплой, сборку ресурсов и т.д.
Повышается скорость разработки Факт :)
mu-plugins- Находятся в ~/wp-content/mu-plugins / ;
- Хорошее место для сниппетов, которые в google предлагают вставить в
functions.php акивного шаблона ;
- Плагины, помещенные в этом каталоге, невозможно выключить из админ.
панели, также как и включить;
- Позволяют легко и надёжно отредактировать функционал ядра.
P.S. плагины вызываются в алфавитном порядке, в зависимости от имени файла, это может вызвать проблемы, но только в том случае, если не используете для инициализации события хуков и фильтры.
Зачем нужно писать плагины ?
1. Модульность.2. Переиспользование в других проектах.3. Разработка мелкими релизами.4. Легко организоваь работу команды.
Дебагеры1. XDebug2. DBG 3. ZendDebug4. XHprof5. А так же многие другие..
Всем известно о пользе дебагеров, их нужно использовать,так как они наши друзья :)
Встроенные дебагеры и
плагины1. Включите режим дебага в wp-cinfig.php define('WP_DEBUG', true);.2. Просто используйте встроенный дебагер.Самые необходимые плагины.1.Debug Bar2.Kint Debugger3.Debug Bar Actions and Filters Addon4.Debug Bar Console
Debug BarВыводит:1.Notices/Warnings.2.Информацию о выполненных запросах в базу данных.3.Все аргументы WP Query.4.Все deprecated функции/методы во всем коде, включая ядро.5.Регулярное выражение WP_Rewrite, 6.текущего URL7.Object Cache, состояние кеша объектов 8.например Memcached
https://wordpress.org/plugins/debug-bar/
Debug Bar
Kint Debugger 1. Вывод d($variable), это лучше чем var_dum();2. Трасирует Kint::trace()3. Умеет выводить в интерфейс debug bar;4. Понравится любителям Drupal и Devel.
https://wordpress.org/plugins/kint-debugger/
Kint Debugger
Debug Bar Actions and Filters Addon
https://ru.wordpress.org/plugins/debug-bar-actions-and-filters-addon
Выводит все хуки и фильтры, использованные внутри запроса, списком, а также в виде дерева внутри интерфейса Debugbar
Debug Bar Actions and Filters Addon
Debug Bar Actions and Filters Addon
Debug Bar Console
https://wordpress.org/plugins/debug-bar-console/
Простая консоль, позволяющая написать и запустить кусочек php или SQL запрос прямо в окружение текущей конфигурации WordPress, и сразу увидеть результат выполнения в нижней части экрана.Доступны все функции ядра плагинов и шаблона.
Debug Bar Console
Минутка уличного дебага
Gist Github - https://goo.gl/m4Pzaa
Обезопаситься от внешнего мира
1. Применяем код ревью внутри команды. 2. Обязательное автообновление и использование
актуальных версий.3. Обязательное ревью «вендорных» плагинов и тем.
Популярные уязвимости своими руками
● Неавторизованный доступ● XSS● Sql injection ● Race conditions
IDE
В phpstorm и NetBeans уже есть
поддержка WordPress
Изучите PHPНайдите время максимально подробно изучить язык, на
котором программируете.
Конец
Спасибо за внимание