WordPress admin-ajax - 将响应延迟到响应发送后

时间:2017-01-19 03:44:39

标签: php ajax wordpress admin-ajax

我正在使用admin-ajax.php来响应来自JavaScript的请求。

当我将所需数据整合在一起并返回我的回复时,我还需要将一些数据发送到外部API并向用户发送电子邮件。这两件事都需要一点时间。

我希望我可以做一些这样的事情,它会在启动动作之前通过AJAX返回JSON响应,这样在响应回到用户后它们实际上可能会在后台发生:

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

       do_action('request_successful', $results);

       wp_die();
}

...但显然等待它在死之前完成操作(因为PHP不是异步)并且AJAX请求在提供响应之前不会完成。

在完全发送响应之前,是否有任何已知方法推迟这些操作?附加到这些操作的两个功能不是传递响应所必需的,只是在结果显示在用户浏览器中所花费的时间增加了几秒钟。

我猜我可以把它们存放在cron工作中很快就会发生,但我觉得很可能有人已经以更好的方式解决了这个问题。

感谢 亚伦

1 个答案:

答案 0 :(得分:0)

它可能与PHP会话锁定有关,如果您已经有一个使用会话数据的脚本,那么也将请求会话数据访问的后一个脚本将被暂停,直到初始脚本完成。阅读更多如何避免它:http://konrness.com/php5/how-to-prevent-blocking-php-requests/

相关问题