SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
WordPress Cron
Владимир Скляр, WordCamp Russia 2014
Операционные системы
● Windows
Планировщик задач (Тask scheduler)
● Linux
cron — повторяющиеся задачи
at — одиночные задачи
Планировщики задач ОС
Планировщик Конфигурация
Задачи в ядре WordPress
● Проверка обновлений
● плагинов
● тем
● ядра
● Удаление записей из
корзины
● Удаление автосохранений
Одиночные Повторяющиеся
● Публикация
запланированных записей
● Отправка пингов
Абстракная схема планировщика WordPress
Планировщик
–
/wp-cron.php
Конфигурация
–
Cron API
wp_options cron→
Запуск
планировщика
Работа планировщика WordPress в деталях
init
wp_cron()
spawn_cron()
...
/wp-cron.php
...
http
Возможные проблемы
● Низкая посещаемость
– запуск с помощью планировщика ОС
● Высокая посещаемость
– планировщик старается максимально исключить возможность
выполнения одной задачи несколькими процессами одновременно
WP_CRON_LOCK_TIMEOUT = 60 секунд
http://wordpress.org/plugins/wp-missed-schedule/
Плагин «WP Missed Schedule»
Запуск через Linux Cron
// wp-config.php
define('DISABLE_WP_CRON', true);
# crontab -e
*/15 * * * * wget -q -O – "http://example.com/wp-cron.php" > /dev/null 2>&1
crontab-generator.org
corntab.com
Альтернативный режим запуска
init
wp_cron()
spawn_cron()
include ''wp-cron.php'';
...
http://example.com/?wp_doing_cron
Альтернативный режим запуска
// wp-config.php
define( 'ALTERNATE_WP_CRON' , true );
Запуск с помощью сторонних сервисов
● EasyCron - https://www.easycron.com/
– плагин - http://wordpress.org/plugins/easycron/
● SetCronJob - https://www.setcronjob.com/
● ...
Cron API
/wp-includes/cron.php
action
callback
callback
callback
callback
Одиночные задачи
wp_schedule_single_event(
time() + 3600, // время запуска
"hook_name", // имя события
array( $arg1, $arg2, $arg3 ) // аргументы
);
add_action( "hook_name", "hook_callback" , 10, 3 );
function hook_callback ( $arg1, $arg2, $arg3 ) {
// код задачи
}
Повторяющиеся задачи
wp_schedule_event(
time() + 60, // время первого запуска
"hourly", // имя интервала
"hook_name", // имя события
array( $arg1, $arg2, $arg3 ) // аргументы
);
add_action( "hook_name", "hook_callback", 10, 3 );
function hook_callback ( $arg1, $arg2, $arg3 ) {
// код задачи
}
Задача
Интервал
выполнения
Интервалы повторяемых задач
["hourly"] => [
["interval"] => 3600,
["display"] => "Каждый час",
],
["daily"] => [
["interval"] => 86400,
["display"] => "Каждый день",
],
["twicedaily"] => [
["interval"] => 43200,
["display"] => "Два раза в день",
]
Создание пользовательских интервалов
add_filter( "cron_schedules" , "add_custom_cron_interval" );
function add_custom_cron_interval ( $intervals ) {
$intervals["weekly"] = array(
"interval" => WEEK_IN_SECONDS,
"display" => "Каждую неделю",
);
return $intervals;
}
Повторяющиеся задачи
wp_schedule_event(
time() + 60, // время первого запуска
"hourly", // имя интервала
"hook_name", // имя события
array( $arg1, $arg2, $arg3 ) // аргументы
);
add_action( "hook_name", "hook_callback", 10, 3 );
function hook_callback ( $arg1, $arg2, $arg3 ) {
// код задачи
}
Удаление задач
wp_unschedule_event()
wp_clear_scheduled_hook()
Плагины
WP Crontrol
http://wordpress.org/plugins/wp-crontrol/
Плагины
Debug Bar Cron - http://wordpress.org/plugins/debug-bar-cron/
WP-CLI - http://wp-cli.org/
Multisite
«WordPress Cron»
Владимир Скляр (versus.post@gmail.com), WordCamp Russia 2014

Contenu connexe

Tendances

Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptСтажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptSmartTools
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколыRoman Brovko
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам AnsibleDenis Honig
 
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.jsВячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.jsYandex
 
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиЗагрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиKirill Mokevnin
 
Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORMBadoo Development
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationAlexey Lesovsky
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practiceAlexey Lesovsky
 
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидахCodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидахCodeFest
 
Дмитрий Милых «Деплой Django-проекта с помощью Fabric»
Дмитрий Милых «Деплой Django-проекта с помощью Fabric»Дмитрий Милых «Деплой Django-проекта с помощью Fabric»
Дмитрий Милых «Деплой Django-проекта с помощью Fabric»DataArt
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesIosif Itkin
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиBusiness incubator HSE
 
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИСTARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС2ГИС Технологии
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Ontico
 
nginx internals
nginx internalsnginx internals
nginx internalsredivy
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Tanya Denisyuk
 

Tendances (20)

Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptСтажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам Ansible
 
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.jsВячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
 
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиЗагрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
 
Reform: путь к лучшему ORM
Reform: путь к лучшему ORMReform: путь к лучшему ORM
Reform: путь к лучшему ORM
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming Replication
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Суперсилы Chrome developer tools
Суперсилы Chrome developer toolsСуперсилы Chrome developer tools
Суперсилы Chrome developer tools
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
 
Chef
ChefChef
Chef
 
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидахCodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
 
Дмитрий Милых «Деплой Django-проекта с помощью Fabric»
Дмитрий Милых «Деплой Django-проекта с помощью Fabric»Дмитрий Милых «Деплой Django-проекта с помощью Fabric»
Дмитрий Милых «Деплой Django-проекта с помощью Fabric»
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИСTARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
 
nginx internals
nginx internalsnginx internals
nginx internals
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
 
Ngs 1 2
Ngs 1 2Ngs 1 2
Ngs 1 2
 

Similaire à Wordpress Cron

От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
Batch processing in rails
Batch processing in railsBatch processing in rails
Batch processing in railssergeymoiseev
 
Web осень 2013 лекция 5
Web осень 2013 лекция 5Web осень 2013 лекция 5
Web осень 2013 лекция 5Technopark
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Mikhail Davydov
 
JPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerJPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerAnton Arhipov
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Vladimir Kochetkov
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiMichael Chernobrov
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)7bits
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИСYandex
 
Дополненная Реальность в Облаке
Дополненная Реальность в ОблакеДополненная Реальность в Облаке
Дополненная Реальность в ОблакеGeeksLab Odessa
 

Similaire à Wordpress Cron (20)

От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
Batch processing in rails
Batch processing in railsBatch processing in rails
Batch processing in rails
 
Web осень 2013 лекция 5
Web осень 2013 лекция 5Web осень 2013 лекция 5
Web осень 2013 лекция 5
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)
 
JPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerJPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profiler
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chai
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Docker 1.9
Docker 1.9Docker 1.9
Docker 1.9
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Batch processing on RoR
Batch processing on RoRBatch processing on RoR
Batch processing on RoR
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
 
JSSDK: Начало
JSSDK: НачалоJSSDK: Начало
JSSDK: Начало
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
 
Drupal Do
Drupal DoDrupal Do
Drupal Do
 
Дополненная Реальность в Облаке
Дополненная Реальность в ОблакеДополненная Реальность в Облаке
Дополненная Реальность в Облаке
 

Plus de versusbassz

Premium-темы WordPress (Wordcamp Russia 2015)
Premium-темы WordPress (Wordcamp Russia 2015)Premium-темы WordPress (Wordcamp Russia 2015)
Premium-темы WordPress (Wordcamp Russia 2015)versusbassz
 
Вёрстка по методологии БЭМ
Вёрстка по методологии БЭМВёрстка по методологии БЭМ
Вёрстка по методологии БЭМversusbassz
 
Premium-темы WordPress
Premium-темы WordPressPremium-темы WordPress
Premium-темы WordPressversusbassz
 
Корневая директория WordPress
Корневая директория WordPressКорневая директория WordPress
Корневая директория WordPressversusbassz
 
Кратко о WordPress
Кратко о WordPressКратко о WordPress
Кратко о WordPressversusbassz
 
Advanced Custom Fields
Advanced Custom FieldsAdvanced Custom Fields
Advanced Custom Fieldsversusbassz
 

Plus de versusbassz (6)

Premium-темы WordPress (Wordcamp Russia 2015)
Premium-темы WordPress (Wordcamp Russia 2015)Premium-темы WordPress (Wordcamp Russia 2015)
Premium-темы WordPress (Wordcamp Russia 2015)
 
Вёрстка по методологии БЭМ
Вёрстка по методологии БЭМВёрстка по методологии БЭМ
Вёрстка по методологии БЭМ
 
Premium-темы WordPress
Premium-темы WordPressPremium-темы WordPress
Premium-темы WordPress
 
Корневая директория WordPress
Корневая директория WordPressКорневая директория WordPress
Корневая директория WordPress
 
Кратко о WordPress
Кратко о WordPressКратко о WordPress
Кратко о WordPress
 
Advanced Custom Fields
Advanced Custom FieldsAdvanced Custom Fields
Advanced Custom Fields
 

Wordpress Cron