如何在100次循环中使用curl PHP?

Dhi*_*DRC -1 php arrays curl

如何在发送请求和将响应存储在数组中的循环中使用curl 100次?

例如:当curl第一次使用in循环并获得500条记录并存储在一个数组中时,再次与第二个循环使用相同的过程并获得500条记录响应形式并存储在同一数组中而没有任何问题。最后,我需要在阵列中存储50K条记录,并将其用于数据库中的插入记录。

我最近两天都在工作,但没有得到任何解决方案,因此请帮助我。

<?php
$final_data = array();
for($d=1;$d<=100;$d++)
{   
    $data = '{"request": {"header": {"username": "xxx","password": "xxx"},
    "body": {
    "shapes": [],
    "size_to": "",
    "size_from": "",
    "color_from": "",
    "color_to": "",
    "clarity_from": "",
    "clarity_to": "",
    "cut_from": "",
    "cut_to": "",
    "polish_from": "",
    "polish_to": "",
    "symmetry_from": "",
    "symmetry_to": "",
    "labs": [],
    "price_total_from": "",
    "price_total_to": "",
    "page_number": "1",
    "page_size": "50",
    "sort_by": "price",
    "sort_direction": "ASC"
    }}}';

    $json = json_decode($data,true);
    $json['request']['body']['page_number'] = $d;
    $data = json_encode($json); 

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

    curl_setopt($curl, CURLOPT_URL, 'http://technet.rapaport.com/HTTP/JSON/RetailFeed/GetDiamonds.aspx');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($curl);
    $dd = json_decode($result,true);

    foreach($dd['response']['body']['diamonds'] as $key)
    {       
        array_push($final_data,$key);
    }   
    curl_close($curl);
}
?>
Run Code Online (Sandbox Code Playgroud)

vin*_*nth 5

您可以使用curl_multi,在执行多个请求时效率更高。

$mh = curl_multi_init();
$handles = array();

for($i = 0 ; $i < 100 ; $i++){
    $ch = curl_init();
    $handles[] = $ch;

    curl_setopt($ch, CURLOPT_URL, 'http://technet.rapaport.com/HTTP/JSON/RetailFeed/GetDiamonds.aspx');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_multi_add_handle($mh,$ch);
}

$running = null;
do {
    curl_multi_exec($mh, $running);
} while ($running);

foreach($handles as $ch){
    $result = curl_multi_getcontent($ch);

    $dd = json_decode($result,true);

    foreach($dd['response']['body']['diamonds'] as $key){       
        array_push($final_data,$key);
    }   

    curl_multi_remove_handle($mh, $ch);
    curl_close($ch);
}
Run Code Online (Sandbox Code Playgroud)