如题,使用curl_multi 可以实现,不过有人为指定耗时。
业务需要同时请求多个第三方,看谁先返回。然后判断结果,如果不正确,再等待第二快返回的,直到结果正确。
然后,处理接下来的业务。
推荐 curl_multi
大佬,除了 curl_multi,还有其他方法可以显示这种业务需求吗; 同行都是 golang 的 协程实现的。php目前好像还不行。如何实现?在线等。
另外,还有一个问题,curl_multi,会人为显示的设置usleep。 而业务需要及时返回的。否则就会超时,下游有200毫秒的超时,限制。现在有大量的超时数据。
1 最好的结果就是,用php 本身的语言特性实现; 2 用webman的自身机制,实现这个需求。应该如何实现?不确定webman 框架能否实现? workerman 能否实现。好像 swool 可以实现,
3 如果swool 可以实现,那就在webman中引入swool来达到目的,应该如果做?
4 比较紧急。
用 curl_multi 是最简单的方案
curl_multi 不用设置usleep
GuzzleHttp 这个类库有并发请求
好的,试试
<?php $urls = array( "http://lxr.php.net/", "http://www.php.net/", ); $mh = curl_multi_init(); foreach ($urls as $i => $url) { $conn[$i] = curl_init($url); curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1); curl_multi_add_handle($mh, $conn[$i]); } do { $status = curl_multi_exec($mh, $active); $info = curl_multi_info_read($mh); if (false !== $info) { $result = curl_multi_getcontent($info['handle']); // 这里获得每个cul的结果,如果结果是想要的就返回,不是就等下一个结果 echo $result; //return $result; } } while ($status === CURLM_CALL_MULTI_PERFORM || $active); foreach ($urls as $i => $url) { curl_close($conn[$i]); }
这个是并发执行的,哪个结果先返回就用哪个
https://learnku.com/php/t/51334 这个方法不妨试试
推荐 curl_multi
大佬,除了 curl_multi,还有其他方法可以显示这种业务需求吗; 同行都是 golang 的 协程实现的。php目前好像还不行。如何实现?在线等。
另外,还有一个问题,curl_multi,会人为显示的设置usleep。 而业务需要及时返回的。否则就会超时,下游有200毫秒的超时,限制。现在有大量的超时数据。
1 最好的结果就是,用php 本身的语言特性实现;
2 用webman的自身机制,实现这个需求。应该如何实现?不确定webman 框架能否实现? workerman 能否实现。好像 swool 可以实现,
3 如果swool 可以实现,那就在webman中引入swool来达到目的,应该如果做?
4 比较紧急。
用 curl_multi 是最简单的方案
curl_multi 不用设置usleep
GuzzleHttp 这个类库有并发请求
好的,试试
这个是并发执行的,哪个结果先返回就用哪个
https://learnku.com/php/t/51334 这个方法不妨试试