WordPress Action Scheduler Tutorial – Background Task এবং Cron Job সহজভাবে

যদি আপনি WordPress plugin development করেন, তাহলে অনেক সময় এমন কিছু কাজ করতে হয় যেগুলো instantly run করানো ঠিক না। যেমন:

  • Stripe payment processing
  • Email sending
  • API request
  • Bulk import/export
  • Daily automation
  • Webhook processing

এই ধরনের কাজের জন্য WordPress এর default WP-Cron অনেক ক্ষেত্রে reliable না। এজন্য WooCommerce সহ বড় বড় plugin ব্যবহার করে Action Scheduler

এই tutorial এ আমরা শিখবো:

  • Action Scheduler কি
  • কিভাবে install করতে হয়
  • as_enqueue_async_action()
  • as_schedule_single_action()
  • as_schedule_recurring_action()
  • Background task system
  • Best practices

Action Scheduler কি?

Action Scheduler হলো WordPress এর একটি background job queue system।

এটা দিয়ে আপনি:

  • Background task run করতে পারবেন
  • Delayed job schedule করতে পারবেন
  • Recurring cron তৈরি করতে পারবেন
  • Failed job retry করতে পারবেন

WooCommerce internally এটা ব্যবহার করে:

  • Email sending
  • Subscription renewals
  • Webhook delivery
  • Order processing

Installation

WooCommerce ব্যবহার করলে

আলাদা করে কিছু install করতে হবে না।

কারণ WooCommerce এর ভিতরেই Action Scheduler built-in থাকে।

Check করতে পারেন:

if ( class_exists( 'ActionScheduler' ) ) {
// Available
}
Composer দিয়ে Install
composer require automattic/action-scheduler

1. Async Background Job

সবচেয়ে useful function:

as_enqueue_async_action()

এটা background এ task run করে।

Example
as_enqueue_async_action(
'my_async_task',
[ 'user_id' => 5 ],
'my-plugin'
);

Handler:

add_action( 'my_async_task', 'handle_my_async_task' );

function handle_my_async_task( $user_id ) {

error_log( 'Processing user: ' . $user_id );

}
এটা কিভাবে কাজ করে?

User page load করার পর:

  • request শেষ হয়
  • তারপর background এ task execute হয়

এজন্য website fast থাকে।

2. Single Scheduled Action

নির্দিষ্ট সময় পরে run করতে:

as_schedule_single_action(
time() + 300,
'send_reminder_email'
);

এখানে:

  • 300 seconds পরে job run হবে
Example
add_action( 'send_reminder_email', function () {

wp_mail(
'admin@example.com',
'Reminder',
'This is reminder email.'
);

});

3. Recurring Cron Job

প্রতিদিন বা প্রতি ঘণ্টায় run করার জন্য।

Daily Cron Example
if ( ! as_next_scheduled_action( 'daily_backup' ) ) {

as_schedule_recurring_action(
time(),
DAY_IN_SECONDS,
'daily_backup'
);

}

Handler:

add_action( 'daily_backup', 'run_daily_backup' );

function run_daily_backup() {

error_log( 'Daily backup started' );

}

4. Duplicate Action Prevent করা

একই job multiple time schedule হওয়া prevent করতে:

if ( ! as_next_scheduled_action( 'my_hook' ) ) {

as_enqueue_async_action( 'my_hook' );

}

5. Arguments Pass করা

as_enqueue_async_action(
'charge_customer',
[
'user_id' => 10,
'amount' => 50,
]
);

Handler:

add_action(
'charge_customer',
function ( $user_id, $amount ) {

// Payment logic

},
10,
2
);

6. Failed Job Debugging

Admin Panel:

Tools → Scheduled Actions

এখানে দেখতে পারবেন:

  • Pending jobs
  • Completed jobs
  • Failed jobs

7. Action Cancel করা

as_unschedule_all_actions( 'daily_backup' );

Specific:

as_unschedule_action(
'charge_customer',
[ 'user_id' => 5 ]
);

8. Real Use Case

WooCommerce checkout এর পরে webhook send:

add_action(
'woocommerce_checkout_order_processed',
function ( $order_id ) {

as_enqueue_async_action(
'send_order_webhook',
[ 'order_id' => $order_id ]
);

}
);

কেন Async ব্যবহার করা ভালো?

কারণ:

  • Checkout fast থাকে
  • API slow হলেও site hang হয় না
  • Failed request retry করা যায়

Best Practices

✅ Small task queue করুন
✅ Large loop avoid করুন
✅ Duplicate check করুন
✅ Error logging রাখুন
✅ API timeout handle করুন

WP-Cron vs Action Scheduler

FeatureWP-CronAction Scheduler
Reliable
Retry
Queue System
Debug UI
WooCommerce Compatible

Conclusion

যদি আপনি:

  • WooCommerce plugin
  • Payment system
  • API integration
  • Automation system
  • Queue processing

নিয়ে কাজ করেন, তাহলে Action Scheduler ব্যবহার করা উচিত।

বিশেষ করে:

  • as_enqueue_async_action()
  • as_schedule_single_action()
  • as_schedule_recurring_action()

এই তিনটি function সবচেয়ে বেশি ব্যবহার হয়।

Leave a Reply

Your email address will not be published. Required fields are marked *