CRON Job in WordPress – कुछ Specific Type के Functions ऐसे होते हैं, जिन्हें Execute होने के लिए Schedule किया जाना होता है और WordPress ये काम करने के लिए जिस API को Use किया जाता है, उसे CRON API के नाम से जाना जाता है।
CRON शब्द UNIX के Time-Based Job Scheduler से प्रेरित है। WordPress विभिन्न प्रकार की Core Functionalities के लिए CRON API को Internally Use करता है। इन Scheduled Jobs के अन्तर्गत WordPress के New Version को Check किया जाता है, Plugin या Themes के Updates को Check किया जाता है व Scheduled Posts की Publishing के लिए भी Use किया जाता है।
WordPress के CRONS किसी Task को Execute करने के लिए हर समय उस Task को Monitor नहीं करते। बल्कि CRON तब Run होते हैं, जब Frontend या Admin Page को Web Browser पर Load किया जाता है। जितनी बार भी किसी WordPress Page/Post का Web Server से Request किया जाता है, WordPress CRON इस बात को Check करता है कि उस समय पर कोई Job Run किए जाने के लिए Scheduled है या नहीं।
यदि WordPress Page/Post Load के समय कोई Job Execution के लिए Scheduled हो, फिर भले ही वह Page Load Visitor द्वारा किया जा रहा हो या Search Engine Spider द्वारा, वह Job Execute हो जाता है।
हालांकि WordPress CRON हमेंशा Page Load होने पर ही Execute होता है, इसलिए ये बात कभी भी 100% Sure नहीं होती कि जिस समय किसी Task को Complete करने के लिए WordPress CRON द्वारा Schedule किया गया है, वह Task Exactly उसी समय Complete होगा।
उदाहरण के लिए यदि किसी Task को 3:50 AM पर Execute होने के लिए Schedule किया गया हो, लेकिन 3:00 AM के बाद पहला Page Load 3:50 AM पर होता है, तो 3:00 AM पर Execute होने के लिए Schedule किया गया Task वास्तव में 3:50 AM पर Execute होगा।
WordPress हमें Single व Recurring के रूप में दो प्रकार के CRON Set करने की सुविधा देता है। Recurring Event एक ऐसा CRON होता है, जो एक निश्चित Scheduled Time पर बार-बार Run होता है। जबकि Single Event केवल एक ही बार Run होता है और Run हो जाने के बाद तब तक फिर से Run नहीं होताए जब तक कि उस Event को फिर से Reschedule न किया जाए।
Scheduling Recurring Event
जब हम किसी CRON को Execute होने के लिए Schedule करते हैं, तब हम वास्तव में एक Custom Action Hook Create करने से शुरूआत करते हैं। ये Action Hook, WordPress CRON Scheduler के साथ किसी Scheduled Time पर किसी CRON को Execute करने हेतु Register करता है। परिणामस्वरूप जब ये Action Hook Trigger होता है, उसके साथ Associated Callback Function भी Execute हो जाता है।
wp_schedule_event( $timestamp, $recurrence, $hook, $args ) API Function
WordPress में किसी Event को Schedule करने के लिए WordPress हमें wp_schedule_event() API Function Provide करता है, जिसके कुल चार Parameters होते हैं, जिन्हें हम हमारी जरूरत के अनुसार Specify करते हैं।
- इस Function के $timestamp Parameter में हमें उस Time को Specify करना होता है, जब हम किसी WordPress Event को Trigger करना चाहते हैं। इस Parameter के रूप में हमें UNIX Timestamp Format में Time को Specify करना होता है। WordPress CRON Timestamp के रूप में UTC/GMT Time को Use करता है, न कि Local Time को। इसलिए इस Parameter में Time Specify करने के लिए हमें हमेंशा time() Function को Use करना चाहिए, न कि current_time( ‘timestamp‘ ) को, जो कि Local Time को Represent करता है।
- $recurrence Parameter इस बात को Specify करता है कि Current Event फिर से कब Trigger होगा। यानी इस Parameter द्वारा Event की Frequency को तय किया जाता है। इस Parameter के रूप में Interval Duration के रूप में हम “hourly”, “twicedaily” या “daily” Values को Specify कर सकते हैं, जबकि Custom Intervals Create करने के लिए wp_get_schedules() API Function को cron_schedules Filter Use कर सकते हैं।
- $hook के रूप में हमें वह Hook Name Specify करना होता है, जिसके Trigger होने पर Current Event Fire होगा।
- $args Parameter, Hook के Callback Function को Pass किए जाने वाले Parameters को Represent करता है।
ये API Function Successful होने की स्थिति में जब null Return करता है, जब Scheduling Event Complete होता है। जबकि Failure की स्थिति में false Return करता है।
चलिए, एक Simple Example Program द्वारा WordPress के CRON API के इस wp_schedule_event() Function को Use में लेते हुए बेहतर तरीके से WordPress CRON की कार्यप्रणाली को समझने की कोशिश करते हैं।
इस Example में सबसे पहले हम एक Settings Page Create कर रहे हैं, क्योंकि ज्यादातर Plugins में सामान्यत: Plugin से सम्बंधित एक Setting Page जरूर होता है। Settings Page Create करने के लिए Specify किया जाने वाला Logic कुछ निम्नानुसार हो सकता है:
add_action( 'admin_menu', 'cron_menu' ); function cron_menu() { //create cron example settings page add_options_page( 'Cron Example Settings', 'Cron Settings', 'manage_options', 'example-cron', 'cron_settings' ); }
इस उदाहरण में हम एक ऐसा Cron Event Schedule कर रहे हैं, जो तब Trigger होता है, जब User पहली बार Settings Page को Visit करता है। हम हमारे Cron Event को कई तरीकों से Execute होने के लिए Schedule कर सकते हैं। जैसे कि Plugin के Activation के समय अथवा जरूरत के अनुसार किसी Specific Timer के माध्यम से। लेकिन Current Example में हम अपने Settings Page के Load होते ही अपने Cron Event को Trigger कर रहे हैं।
उपरोक्तानुसार Settings Page Define करने के बाद हमें एक Custom Action Hook Create करना होता है और एक Callback Function Define करना होता है, जो उस Custom Action Hook के Trigger होने के Response में Run होता है और Scheduled Task को Perform करता है। इस जरूरत को हम निम्नानुसार पूरा कर सकते हैं:
add_action( 'cron_hook', 'cron_email_reminder'); function cron_email_reminder() { //send scheduled email wp_mail( 'bccfalna@gmail.com', 'Reminder EMail.', 'Don\’t forget to check email.' ); }
जैसाकि इस Code द्वारा हम समझ सकते हैं कि “cron_hook” एक Custom Hook है और जब ये Hook Fire होता है, तो इसके Trigger होने के Response में इसके साथ Associated cron_email_reminder() नाम का Callback Function भी Execute हो जाता है। यही वह Function होता है, जो Cron Event Trigger होने के Response में Execute होता है। इस Example Code में हमने wp_mail() नाम का API Function Use किया है, जो कि एक Reminder Email Send करने का काम करता है।
अब हमें एक और Custom Function Create करना होता है, जिसके माध्यम से हम हमारे Plugin के Settings Page को Display करते हैं व Cron Job को Schedule करते हैं। इस जरूरत को पूरा करने के लिए हम निम्नानुसार Code लिख सकते हैं, जहां Settings Display करने के लिए जो Function Define करना है, उसका नाम “cron_settings” ही रखना जरूरी है, क्योंकि WordPress Panel में हमने अपने Plugin के लिए User Interface बनाने हेतु जो add_options_page() API Function Use किया था, उसमें इसी User Interface Function Name को Specify किया था:
function cron_settings() { //verify event has not been scheduled if ( !wp_next_scheduled( 'cron_hook' ) ) { //schedule the event to run hourly wp_schedule_event( time(), 'hourly', 'cron_hook' ); } }
इस Code में सबसे पहले हमने wp_next_scheduled() API Function को Use करते हुए इस बात को Confirm किया है कि कहीं हमारा Cron Job पहले से ही Scheduled तो नहीं है। यदि Cron Job पहले से Scheduled हो, तो ये API Function उस Cron Job का Timestamp Return करता है। लेकिन यदि Cron Job पहले से Scheduled न हो, तो ये API Function false Return करता है।
यदि Cron Job पहले से Scheduled न हो, तो इसे Schedule करना होता है और Cron Job Schedule करने के लिए हम wp_schedule_event() API Function Use करते हैं। इस API Function में पहले Parameter के रूप में हमें Current Time Specify करना होता है, Second Parameter के रूप में हमें Recurrence को Specify करना होता है, जो इस बात को Represent करता है कि कितने समय के बाद Cron Job को फिर से Schedule करना है। जबकि तीसरे Parameter के रूप में हमें उस Action Hook के नाम को Specify करना होता है, जिसे Cron Event के Trigger होने पर Fire करना होता है। हमारे Example Code में हमने इस API Function को निम्नानुसार Specify किया है:
wp_schedule_event( time(), ‘hourly‘, ‘cron_hook‘ );
इसमें time() Function, Current Time को Represent करता है, जो कि Base Time की तरह Use होता है। दूसरे Parameter के रूप में हमने “hourly” Specify किया है, जो इस बात को Represent करता है कि इस Cron Job को हर घण्टे फिर से Reset किया जाएगा और तीसरे Parameter के रूप में हमने “cron_hook” Action Hook Specify किया है।
परिणामस्वरूप हर घण्टे ये API Function इस Hook को Fire करेगा। इस Custom Action Hook के Fire होते ही cron_email_reminder() API Function Execute हो जाता है और वह Scheduled Task Complete हो जाता है, जिसके लिए Cron Event को Schedule किया गया था। इस प्रकार से यदि हम हमारे पूरे Plugin Code को देखें, तो ये Code कुछ निम्नानुसार होता है:
<?php /* *Plugin Name: Cron Job *Plugin URI: https://www.bccfalna.com/wpplugins/cron-job/ *Description: Understanding recurring Cron Job *Author: Kuldeep Chand *Version: 1.0 *Author URI: https://www.bccfalna.com/ */ add_action( 'admin_menu', 'cron_menu' ); function cron_menu() { //create cron example settings page add_options_page( 'Cron Example Settings', 'Cron Settings', 'manage_options', 'example-cron', 'cron_settings' ); } add_action( 'cron_hook', 'cron_email_reminder'); function cron_email_reminder() { //send scheduled email wp_mail( 'bccfalna@gmail.com', 'Reminder EMail.', 'Don\’t forget to check email.' ); } function cron_settings() { //verify event has not been scheduled if ( !wp_next_scheduled( 'cron_hook' ) ) { //schedule the event to run hourly wp_schedule_event( time(), 'hourly', 'cron_hook' ); } }
Currently हमारे WordPress System में कितने Cron Job Scheduled हैं और हमारे द्वारा Created Cron Job Schedule हुआ या नहीं, इस बात का आसानी से पता लगाने के लिए हमें “WordPress Control” नाम का Plugin Install कर सकते हैं। इस Plugin को Install करने के बाद Currently जितने भी Cron Jobs Scheduled होते हैं, उनकी जानकारी WordPress के Settings Panel के Control Option को Click करके लगाया जा सकता है, जो कि कुछ निम्नानुसार दिखाई दे सकता है:
जबकि यदि हम किसी Cron श्रवइ को Manually Setup करना चाहें, जो इस जरूरत को पूरा करने के लिए हम WordPress के Settings Panel में स्थित “Cron Schedule” नाम के Option को Click कर सकते हैं, जिसका Settings Page कुछ निम्नानुसार दिखाई देता है:
Read more about …
- Scheduling Single Event
- Unscheduling Cron Job Event
- Specifying Custom Intervals
- Viewing Scheduled Cron Events
- True CRON
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance WordPress in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Advance WordPress in Hindi | Page: 835 | Format: PDF