WP插件中的异步php代码

时间:2014-11-09 09:22:50

标签: php wordpress curl asynchronous wordpress-plugin

需要使这段代码与其余代码异步。它将收集wp帖子并向我的网址发送帖子请求。该插件应该异步运行,不会妨碍wordpress站点的运行。

for ($x=0; $x<=n; $x++) {
$data = posts[$x];
$ch = curl_init('http://myurl.com/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'ACCEPT: application/json',
'Content-Length: ' . strlen($data))
);

$result = curl_exec($ch);
curl_close($ch);
}

2 个答案:

答案 0 :(得分:1)

使用Guzzle Package,代码示例:

$request = $client->createRequest('GET', ['future' => true]);
$client->send($request)->then(function ($response) {
    echo 'Got a response! ' . $response;
});

看看你怎么样install it。另请查看RingPHP and Future Responses以获取更多信息。实际上RingPHP被用作Guzzle中的处理程序层,而React/Promise正在为Promises/A提供PHP支持。

答案 1 :(得分:1)

在WordPress中处理异步请求的正确方法是使用WP-Cron来安排事件。您可以将其安排为运行一次,也可以按间隔运行。请参阅有关设置的一些指南here。结帐的两个主要功能是wp_schedule_event()wp_schedule_single_event()

但要记住的一件事是,因为您的代码仅在有请求时才会运行,如果流量较低,那么您的预定事件可能会在预期时无法运行。我在我的网站上写了一篇关于如何将crontab与WP-Cron结合使用以更准确地安排事件的文章:http://justinsilver.com/technology/wordpress/disable-wp-cron-wordpress/