【发布时间】:2016-05-04 20:47:53
【问题描述】:
所以我连接到https://genderize.io/ API。我想尽可能快地从这个 API 中抓取数据,因为我可能需要一次进行 1,000,000 次搜索。是否可以附加 100,000 个(每个请求 10 个名称)具有不同参数的不同 curl_init 标头,然后并行执行它们?如果可以的话,这似乎好得令人难以置信。另外,如果我不能这样做,我还能如何加快请求速度。我当前的代码使用 curl_init 的一个实例,并在 for 循环中更改每个循环的 URL。这是我当前的循环:
$ch3 = curl_init();
for($x = 0; $x < $loopnumber; $x = $x + 10){
$test3 = curl_setopt_array($ch3, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://api.genderize.io?name[0]=' . $firstnames[$x] . '&name[1]=' . $firstnames[$x+1] . '&name[2]=' . $firstnames[$x+2] . '&name[3]=' . $firstnames[$x+3] . '&name[4]=' . $firstnames[$x+4] . '&name[5]=' . $firstnames[$x+5] . '&name[6]=' . $firstnames[$x+6] . '&name[7]=' . $firstnames[$x+7] . '&name[8]=' . $firstnames[$x+8] . '&name[9]=' . $firstnames[$x+9]
));
$resp3 = curl_exec($ch3);
echo $resp3;
$genderresponse = json_decode($resp3,true);
【问题讨论】:
-
"API 是免费的,但限制为每天 1000 个名称。" "API 被限制为每个请求最多 10 个名称"
-
curl_multi_*可能会有所帮助,但我猜真正的瓶颈在于 API。如果你一次给他们打了几十万个电话,它可能不会为你节省太多时间。你必须自己测试才能看到。 -
@Dagon 我明白了,我要为这项服务付费,每天获得 1000 多个名字。我想知道我是否并行请求每个请求是否可以有 10 个名称并允许同时执行。
-
你可以测试一下就知道了。
标签: php api curl libcurl curl-multi