Длительное действие от плагина


Я создаю плагин WordPress, который будет копировать данные сообщений в удаленную базу данных, я знаю, что для передачи всех сообщений потребуется некоторое время.

Как мне создать функцию копирования, чтобы она не прерывалась? В идеале он должен работать в фоновом режиме и показывать некоторое уведомление о завершении.

Author: Tomasz Tybulewicz, 2012-11-08

1 answers

Вы могли бы использовать псевдо-cron WordPress и wp_schedule_single_event.

<?php
// add the action.
add_action('wpse71941_cron', 'wpse71941_long_running');
function wpse71941_long_running($args)
{
    // might need to call `set_time_limit` here
    set_time_limit(0);

    // do long running stuff here

    // return normal time limit
    if($l = ini_get('max_execution_time'))
        set_time_limit($l);
}

// schedule the event for right now
wp_schedule_single_event(
    time(), 
    'wpse71941_cron', 
    array('args' => 'for', 'callback' => 'function')
);

Не уверен, что вам нужно возиться с ограничением по времени. WP вызывает ignore_user_abort в верхней части скрипта cron.

 2
Author: chrisguitarguy, 2012-11-15 03:39:30