wordpress cron

29
WordPress Cron Владимир Скляр, WordCamp Russia 2014

Upload: versusbassz

Post on 15-Jun-2015

490 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Wordpress Cron

WordPress Cron

Владимир Скляр, WordCamp Russia 2014

Page 2: Wordpress Cron
Page 3: Wordpress Cron

Операционные системы

● Windows

Планировщик задач (Тask scheduler)

● Linux

cron — повторяющиеся задачи

at — одиночные задачи

Page 4: Wordpress Cron

Планировщики задач ОС

Планировщик Конфигурация

Page 5: Wordpress Cron
Page 6: Wordpress Cron

Задачи в ядре WordPress

● Проверка обновлений● плагинов● тем● ядра

● Удаление записей из корзины

● Удаление автосохранений

Одиночные Повторяющиеся

● Публикация запланированных записей

● Отправка пингов

Page 7: Wordpress Cron
Page 8: Wordpress Cron

Абстракная схема планировщика WordPress

Планировщик–

/wp-cron.php

Конфигурация

–Cron API

wp_options cron→

Запускпланировщика

Page 9: Wordpress Cron

Работа планировщика WordPress в деталях

init

wp_cron()

spawn_cron()

...

/wp-cron.php

...

http

Page 10: Wordpress Cron

Возможные проблемы

● Низкая посещаемость– запуск с помощью планировщика ОС

● Высокая посещаемость– планировщик старается максимально исключить возможность

выполнения одной задачи несколькими процессами одновременно

WP_CRON_LOCK_TIMEOUT = 60 секунд

Page 11: Wordpress Cron

http://wordpress.org/plugins/wp-missed-schedule/

Плагин «WP Missed Schedule»

Page 12: Wordpress Cron

Запуск через 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

Page 13: Wordpress Cron

Альтернативный режим запуска

init

wp_cron()

spawn_cron()

include ''wp-cron.php'';

...

http://example.com/?wp_doing_cron

Page 14: Wordpress Cron

Альтернативный режим запуска

// wp-config.php

define( 'ALTERNATE_WP_CRON' , true );

Page 15: Wordpress Cron

Запуск с помощью сторонних сервисов

● EasyCron - https://www.easycron.com/– плагин - http://wordpress.org/plugins/easycron/

● SetCronJob - https://www.setcronjob.com/

● ...

Page 16: Wordpress Cron

Cron API

/wp-includes/cron.php

Page 17: Wordpress Cron

action

callback

callback

callback

callback

Page 18: Wordpress Cron

Одиночные задачи

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 ) {

// код задачи}

Page 19: Wordpress Cron

Повторяющиеся задачи

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 ) { // код задачи}

Page 20: Wordpress Cron

Задача Интервалвыполнения

Page 21: Wordpress Cron

Интервалы повторяемых задач

["hourly"] => [ ["interval"] => 3600, ["display"] => "Каждый час", ],

["daily"] => [ ["interval"] => 86400, ["display"] => "Каждый день", ],

["twicedaily"] => [ ["interval"] => 43200, ["display"] => "Два раза в день", ]

Page 22: Wordpress Cron

Создание пользовательских интервалов

add_filter( "cron_schedules" , "add_custom_cron_interval" );

function add_custom_cron_interval ( $intervals ) {

$intervals["weekly"] = array( "interval" => WEEK_IN_SECONDS, "display" => "Каждую неделю", );

return $intervals;}

Page 23: Wordpress Cron

Повторяющиеся задачи

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 ) { // код задачи}

Page 24: Wordpress Cron

Удаление задач

wp_unschedule_event()wp_clear_scheduled_hook()

Page 25: Wordpress Cron

Плагины

WP Crontrol

http://wordpress.org/plugins/wp-crontrol/

Page 26: Wordpress Cron
Page 27: Wordpress Cron

Плагины

Debug Bar Cron - http://wordpress.org/plugins/debug-bar-cron/

WP-CLI - http://wp-cli.org/

Page 28: Wordpress Cron

Multisite

Page 29: Wordpress Cron

«WordPress Cron»

Владимир Скляр ([email protected]), WordCamp Russia 2014