php利用curl*multi*函数实现异步请求

这是php官方示例的用curl实现并发请求的代码:http://php.net/manual/en/function.curl-multi-exec.php 


改造一下,把请求数减少为1个,就得到用curl实现异步请求的原始代码:

src_sleep.php 可以sleep一段时间以突显异步效果
$ch1 = createCurlResouce("http://***/src_sleep.php");

// 创建批处理cURL句柄
$mh = curl_multi_init();
// 增加1个句柄
curl_multi_add_handle($mh, $ch1);

// 执行批处理句柄
$running=null;
curl_multi_exec($mh, $running);

// 等待一定时间(以模拟计算过程)
echo 'start sleep to demostrate time-consuming counting: ', date('H:i:s'), " 
\n"; sleep(4); // 阻塞等待到接口有返回 curl_multi_select($mh); curl_multi_exec($mh, $running); // 获取接口数据 $rs = curl_multi_getcontent($ch1); echo $rs; // 关闭全部句柄 curl_multi_remove_handle($mh, $ch1); curl_multi_close($mh); echo 'end test: ', date('H:i:s'), ', time consume: ', (microtime(true)-$startTime), "
\n"; ?>

为方便说明问题,进一步简单地封装上述代码:

\n";

?>

这样就简单粗陋地实现了 send_request() 与 rev_request() 这种异步请求的形式(实际生产环境的代码肯定要优化)。

在我的另一个帖子里试图说明,不单是逻辑形式上,其底层请求实现也是异步的。


你可能感兴趣的:(php利用curl*multi*函数实现异步请求)