今天在做微信公众号通知的时候,由于某种原因,在返回给微信成功信息的那一步,需要再向微信发送另一个请求,但是不能影响之前返回给微信的请求。如果直接再发起请求,就会使之前的返回信息失败,所以异步发起请求就非常好用了。
在PHP中我们有的时候其实希望在执行某项操作的时候,同时去执行另外一项操作,这就是异步。PHP里面最简单的异步请求就是利用强大的curl,代码示例如下:
function resyncGet($url)
{
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_TIMEOUT,1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
function resyncPost($url , $post)
{
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_TIMEOUT,1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
这段代码的关键是提供了一个Timeout,仅1秒钟,也就是说curl发出请求,无论是否接收到返回的内容,1秒钟之后都会关闭该访问,因此这个函数的执行数据为1.0-1.1秒之间。但对于用户来说,如果是一个需要进行数据处理的应用,1秒中的等待几乎是被忽略的,如果你希望用一段更简单和容易被理解的代码,可以选择curl来实现。
文章评论