مجید
2 سال پیش توسط مجید مطرح شد
3 پاسخ

ایجاد quene و اجرا با کرون جاب در وردپس

سلام گقت بخیر
دوستان من سامانه پیامکی دارم و دارم افزونه ای مینویسم که نیا ز هست هر چند دقیقه یکبار با api اطلاعات را از سامانه پیامکی بخونه و پیامک هایی در پاسخ ارسال. کنه
چطور میتونم این کار انجام بدم
ممنون میشم راهنمایی بفرمایید


ثبت پرسش جدید
سید هادی خانیان
تخصص : برنامه نویس PHP
@hadikhanian 2 سال پیش مطرح شد
1

سلام.
توضیحات این موضوع خیلی زیاد است.
در نتیجه لطفا لینک زیر را مطالعه بفرمایید:
https://wpshout.com/wp_schedule_event-examples
اگر جایی را متوجه نشدید یا خطا داشتید بفرمایید تا بررسی شود.


مجید
تخصص : برنامه نویس
@majeeddehghan 2 سال پیش مطرح شد
0

@hadikhanian
من این کد را زدم و با افزونه wp crontrol چک کردم به کرون جاب ها اضافه نشده

add_action( 'init', 'mj_register_users_count_event' );
/**
 * this method will register the cron event
 */
function mj_register_users_count_event() {
    // make sure this event is not scheduled
    if( !wp_next_scheduled( 'mj_users_count_hook' ) ) {
        // schedule an event
        wp_schedule_event( time(), 'half', 'mj_users_count_hook' );
    }
}

/**
 * mj_register_users_count method will be call when the cron is executed
 */
add_action( 'mj_users_count_hook', 'mj_users_count' );

/**
 * this method will call when cron executes
 */
function mj_users_count() {
    wp_mail( get_user_by( 1 )->user_email, 'Tutorial: Cron job from mjkhajeh.ir', count_users()['total_users'] );
}

سید هادی خانیان
تخصص : برنامه نویس PHP
@hadikhanian 2 سال پیش مطرح شد
0

@majeeddehghan
مطمئن شوید که مقدار half در وردپرس شما تعریف شده است.
در غیر این صورت مقدار های پیش فرض ‘hourly’, ‘daily’, ‘twicedaily’ می باشند.
در ضمن می تونید از طریق یک فیلتر روی هوک cron_schedules مقدار مورد نظرتون رو به recurrence اضافه کنید.

کد زیر را جایگزین کد تون بکنید:

add_action( 'wp_loaded', 'mj_register_users_count_event' );
function mj_register_users_count_event() {
    if( !wp_next_scheduled( 'mj_users_count_hook' ) ) {
        // schedule an event
        if (!wp_next_scheduled('mj_users_count_hook')) {
            wp_schedule_event(time() + 60, 'hourly', 'mj_users_count_hook');
        } else {
            $next = wp_next_scheduled('mj_users_count_hook');
            $now = strtotime("-60 min");
            if ($next < $now) {
                wp_unschedule_event($next, 'mj_users_count_hook');
                wp_schedule_event(time() + 60, 'hourly', 'mj_users_count_hook');
            }
        }
    }
}

کد بالا ی جوری میاد کار رو اصلاح میکنه که اگر هوک تون از صف خارج شده بوده دوباره اون رو بیاد چک بکنه و برش گردونه به صف اجرایی. واسه همین ی مقدار منفی 60 دقیقه داره چون زمان رو اجرا رو اینجا روی یک ساعت تنظیم کردیم.
زمان اجرایی بعدی رو جهت اطمینان به علاوه 60 ثانیه کردیم تا اگر مشکلی داشت برای بار اول فرصت داشته باشه که اجراش کنه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام