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
120
Getting Started with the Cron API
WordCamp Saratoga 2014
JR Tashjian
October 11, 2014
Tweet
Share
Other Decks in Programming
See All in Programming
Prompt Engineeringの再定義「Context Engineering」とは
htsuruo
0
110
Gemini CLIの"強み"を知る! Gemini CLIとClaude Codeを比較してみた!
kotahisafuru
2
650
ソフトウェア設計とAI技術の活用
masuda220
PRO
25
7k
ZeroETLで始めるDynamoDBとS3の連携
afooooil
0
130
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
6
1k
構造化・自動化・ガードレール - Vibe Coding実践記 -
tonegawa07
0
160
What's new in Adaptive Android development
fornewid
0
130
変化を楽しむエンジニアリング ~ いままでとこれから ~
murajun1978
0
590
NEWT Backend Evolution
xpromx
1
170
AIコーディングエージェント全社導入とセキュリティ対策
hikaruegashira
15
8.7k
型で語るカタ
irof
1
880
大規模FlutterプロジェクトのCI実行時間を約8割削減した話
teamlab
PRO
0
230
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
96
6.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
GitHub's CSS Performance
jonrohan
1031
460k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Raft: Consensus for Rubyists
vanstee
140
7k
Building Adaptive Systems
keathley
43
2.7k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
720
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
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