如何获取curl_multi_exec执行结果并拆分到两个变量中
解决curl_multi_exec结果拆分到指定变量的问题
你只需要在处理每个异步请求结果时,根据请求的索引(对应urls数组的顺序)将解析后的JSON分别赋值给$response_url和$response_url2即可。修改后的代码如下:
$urls = [ "https://rssbot.ru/1.json", "https://rssbot.ru/2.json" ]; $mh = curl_multi_init(); $allResponse = []; foreach($urls as $k => $url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_multi_add_handle($mh, $ch); $allResponse[$k] = $ch; } $running = null; do { curl_multi_exec($mh, $running); } while($running > 0); // 初始化目标变量 $response_url = null; $response_url2 = null; foreach($allResponse as $id => $ch) { $response = curl_multi_getcontent($ch); curl_multi_remove_handle($mh, $ch); $decoded_response = json_decode($response); var_dump($decoded_response); // 保留调试输出 // 根据请求索引分配结果到对应变量 if ($id === 0) { $response_url = $decoded_response; } elseif ($id === 1) { $response_url2 = $decoded_response; } } curl_multi_close($mh); // 现在可分别处理两个变量 var_dump($response_url); var_dump($response_url2);
关键修改说明:
- 提前初始化
$response_url和$response_url2,避免未定义变量警告 - 利用
$id(对应urls数组的索引,0对应第一个链接,1对应第二个链接)将解析后的JSON结果分别赋值给目标变量 - 后续可直接使用
$response_url和$response_url2处理各自的JSON数据
内容的提问来源于stack exchange,提问作者Наталья Юрова
相关产品推荐
相关产品推荐

