Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Getting Started with the Cron API
Search
JR Tashjian
October 11, 2014
Programming
0
96
Getting Started with the Cron API
WordCamp Saratoga 2014
JR Tashjian
October 11, 2014
Tweet
Share
Other Decks in Programming
See All in Programming
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
Content Security Policy入門 セキュリティ設定と 違反レポートのはじめ方 / Introduction to Content Security Policy Getting Started with Security Configuration and Violation Reporting
uskey512
1
520
シェーダーで魅せるMapLibreの動的ラスタータイル
satoshi7190
1
480
as(型アサーション)を書く前にできること
marokanatani
9
2.6k
Realtime API 入門
riofujimon
0
150
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.7k
イベント駆動で成長して委員会
happymana
1
320
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
280
RubyLSPのマルチバイト文字対応
notfounds
0
120
Flutterを言い訳にしない!アプリの使い心地改善テクニック5選🔥
kno3a87
1
150
Macとオーディオ再生 2024/11/02
yusukeito
0
370
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
330
Featured
See All Featured
BBQ
matthewcrist
85
9.3k
What's new in Ruby 2.0
geeforr
343
31k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
A Modern Web Designer's Workflow
chriscoyier
693
190k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Building Your Own Lightsaber
phodgson
103
6.1k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Gamification - CAS2011
davidbonilla
80
5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Transcript
@jrtashjian
WordPress Cron API
WordPress Cron API
What’s Cron?
* * * * * /path/to/command
* * * * * /path/to/command day of the week
* * * * * /path/to/command day of the week
month
* * * * * /path/to/command day of the week
month day of the month
* * * * * /path/to/command day of the week
month day of the month hour
* * * * * /path/to/command day of the week
month day of the month hour minute
# run once a year 0 0 1 1 *
/path/to/command
# run once a year @yearly /path/to/command @annually /path/to/command
@monthly /path/to/command @weekly /path/to/command @daily /path/to/command @hourly /path/to/command
Asynchronous Jobs
Database Job System Clients Enqueue Workers Dequeue
None
WordPress Cron API
Database Job System Clients Enqueue Workers Dequeue
Database WP Cron API Plugin Enqueue Site Visits Dequeue
WordPress Cron API
Using the API
2 Main Functions • wp_schedule_event( $timestamp, $recurrence, $hook, $args )
• wp_schedule_single_event( $timestamp, $hook, $args )
2 Main Functions • wp_schedule_event( $timestamp, $recurrence, $hook, $args )
• wp_schedule_single_event( $timestamp, $hook, $args )
2 Main Functions • wp_schedule_event( $timestamp, $recurrence, $hook, $args )
• wp_schedule_single_event( $timestamp, $hook, $args )
2 Main Functions • wp_schedule_event( $timestamp, $recurrence, $hook, $args )
• wp_schedule_single_event( $timestamp, $hook, $args )
2 Main Functions • wp_schedule_event( $timestamp, $recurrence, $hook, $args )
• wp_schedule_single_event( $timestamp, $hook, $args )
Custom Schedule
Get Schedules <?php wp_get_schedules(); ?> Array ( [hourly] => Array
( [interval] => 3600 [display] => Once Hourly ) [twicedaily] => Array ( [interval] => 43200 [display] => Twice Daily ) [daily] => Array … )
Create a Schedule <?php add_filter( 'cron_schedules', 'cron_add_weekly' ); function cron_add_weekly(
$schedules ) { $schedules['weekly'] = array( 'interval' => 60 * 60 * 24 * 7, // 604800 'display' => __( 'Once Weekly' ) ); }
Create a Schedule <?php add_filter( 'cron_schedules', 'cron_add_weekly' ); function cron_add_weekly(
$schedules ) { $schedules['weekly'] = array( 'interval' => 60 * 60 * 24 * 7, // 604800 'display' => __( 'Once Weekly' ) ); }
Create a Schedule <?php add_filter( 'cron_schedules', 'cron_add_weekly' ); function cron_add_weekly(
$schedules ) { $schedules['weekly'] = array( 'interval' => 60 * 60 * 24 * 7, // 604800 'display' => __( 'Once Weekly' ) ); }
Recurring Event
Recurring Event <?php register_activation_hook( __FILE__, 'prefix_activation' ); function prefix_activation() {
wp_schedule_event( time(), 'hourly', 'prefix_hourly_event_hook' ); } add_action( 'prefix_hourly_event_hook', 'prefix_do_this_hourly' ); function prefix_do_this_hourly() { // do something. }
Recurring Event <?php register_activation_hook( __FILE__, 'prefix_activation' ); function prefix_activation() {
wp_schedule_event( time(), 'hourly', 'prefix_hourly_event_hook' ); } add_action( 'prefix_hourly_event_hook', 'prefix_do_this_hourly' ); function prefix_do_this_hourly() { // do something. }
Recurring Event <?php register_activation_hook( __FILE__, 'prefix_activation' ); function prefix_activation() {
wp_schedule_event( time(), 'hourly', 'prefix_hourly_event_hook' ); } add_action( 'prefix_hourly_event_hook', 'prefix_do_this_hourly' ); function prefix_do_this_hourly() { // do something. }
Single Event
Single Event <?php add_action( 'prefix_single_event', 'prefix_single_event ); function prefix_single_event() {
// do something } wp_schedule_single_event( time() + 3600, 'prefix_single_event' );
Single Event <?php add_action( 'prefix_single_event', 'prefix_single_event ); function prefix_single_event() {
// do something } wp_schedule_single_event( time() + 3600, 'prefix_single_event' );
Single Event with arguments <?php add_action( 'prefix_single_event', 'prefix_single_event, 10, 3
); function prefix_single_event( $arg1, $arg2, $arg3 ) { // do something } wp_schedule_single_event( time() + 3600, 'prefix_single_event', array( $arg1, $arg2, $arg3 ) );
How it works 1. A visitor requests a page on
your site. 2. wp_cron() is called 3. spawn_cron() is called 4. One event processed, then removed from queue
Strengths
Weaknesses
When to use it
Getting More Accurate
define( 'DISABLE_WP_CRON', true );
0 * * * * wget http://yourwebsite.com/wp- cron.php >& /dev/null
WP-CLI http://wp-cli.org
wp cron command • event list • event delete •
event schedule • event run • schedule list
wp cron event list >> wp cron event list +----------------------+---------------------+--------------------+------------+
| hook | next_run_gmt | next_run_relative | recurrence | +----------------------+---------------------+--------------------+------------+ | wp_version_check | 2014-10-11 17:50:37 | 2 hours 13 minutes | 12 hours | | wp_update_plugins | 2014-10-11 17:50:37 | 2 hours 13 minutes | 12 hours | | wp_update_themes | 2014-10-11 17:50:37 | 2 hours 13 minutes | 12 hours | | wp_scheduled_delete | 2014-10-11 18:42:25 | 3 hours 5 minutes | 1 day | | wp_maybe_auto_update | 2014-10-11 19:50:00 | 4 hours 12 minutes | 12 hours | +----------------------+---------------------+--------------------+------------+
wp shell >> wp shell wp> prefix_do_this_hourly(); wp> $arg1 =
"first value"; wp> $arg2 = "second value"; wp> $arg3 = "third value"; wp> prefix_single_event( $arg1, $arg2, $arg3 );
Contributing https://make.wordpress.org/core/components/cron-api/
Questions? @jrtashjian jrtashjian.com