WordPress admin-ajax — отложить действия до момента отправки ответа

Я использую admin-ajax.php для ответа на запросы из JavaScript.

Когда я собрал необходимые данные и возвратил свой ответ, мне также нужно отправить некоторые данные во внешний API и отправить электронное письмо пользователю. Обе эти вещи занимают немного времени.

Я надеялся, что смогу сделать что-то вроде этого, которое вернет JSON-ответ через AJAX перед тем, как отключить действия, чтобы они могли по существу происходить в фоновом режиме после того, как ответ вернулся с пользователем:

function my_ajax_action() {
//process the $_REQUEST ajax data here
echo json_encode($results);

do_action('request_successful', $results);

wp_die();
}

…но он, очевидно, ожидает завершения действий, прежде чем он умрет (так как PHP не асинхронен), и запрос AJAX не завершится, пока не будет получен ответ.

Существуют ли какие-либо известные способы отложить эти действия до тех пор, пока ответ не будет полностью отправлен? Две функции, прикрепленные к этим действиям, не требуются для доставки ответа и просто добавляют пару секунд к количеству времени, которое требуется для отображения результатов в браузере пользователя.

Я предполагаю, что мог бы хранить их в работе cron, чтобы это произошло очень скоро, но я чувствую, что, вероятно, кто-то уже решил эту проблему лучше.

Спасибо
Аарон

0

Решение

это может быть связано с блокировкой сеанса PHP, и если у вас уже есть сценарий, использующий данные сеанса, то более поздний сценарий, который также будет запрашивать доступ к данным сеанса, будет отложен до завершения начального сценария. Узнайте больше, как этого избежать: http://konrness.com/php5/how-to-prevent-blocking-php-requests/

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector