Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Getting Started with the Cron API
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
JR Tashjian
October 11, 2014
Programming
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Getting Started with the Cron API
WordCamp Saratoga 2014
JR Tashjian
October 11, 2014
Other Decks in Programming
See All in Programming
Are APIs Still Relevant in the AI Era?
soyuka
0
430
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
500
The Rails Doctrine Decade
koic
2
520
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.5k
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
350
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.6k
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
120
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.2k
FreeBSDでZabbixを動かす
kenkino
0
360
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
720
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
120
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
480
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
We Have a Design System, Now What?
morganepeng
55
8.4k
New Earth Scene 8
popppiees
4
2.7k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
550
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
580
The untapped power of vector embeddings
frankvandijk
2
1.9k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
720
Facilitating Awesome Meetings
lara
57
7.2k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
RailsConf 2023
tenderlove
30
1.6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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