php 与 curl_multi 多次卷曲成相同的 API
php curling to a same API numerous times with curl_multi
我有一个 API,我同时调用了至少 10 次不同的信息。
这是我目前正在使用的功能。
$mh = curl_multi_init();
$arr = array();
$rows = array();
while ($row = mysqli_fetch_array($query)) {
array_push($arr, initiate_curl($row, $mh));
array_push($rows, $row);
}
$running = null;
for(;;){
curl_multi_exec($mh, $running);
if(!$running){
break;
}
curl_multi_select($mh);
usleep(1);
}
sleep(1);
foreach($arr as $curl) {curl_multi_remove_handle($mh, $curl);}
curl_multi_close($mh);
foreach($arr as $key=>$curl) {
$result = curl_multi_getcontent($curl);
$dat = simplexml_load_string($result);
check_time($dat, $rows[$key], $fp);
}
当请求数量较少时它工作正常,但当它增长时一些卷曲不会带回适当的数据。即它们 return 为空,我猜是因为服务器在任何事情发生之前都经过了..
我该怎么做才能完成这项工作?我在 php 或服务器方面没有经验,并且很难浏览文档..
如果我创建另一个 php 文件,在其中我卷曲到 API 来处理数据,并且 multi_curl php 文件,它会工作吗更好的? (因为在那种情况下,某些调用不 return 数据就没那么重要了。这会不会使我的服务器不断超载?
我有一个 API,我同时调用了至少 10 次不同的信息。
这是我目前正在使用的功能。
$mh = curl_multi_init();
$arr = array();
$rows = array();
while ($row = mysqli_fetch_array($query)) {
array_push($arr, initiate_curl($row, $mh));
array_push($rows, $row);
}
$running = null;
for(;;){
curl_multi_exec($mh, $running);
if(!$running){
break;
}
curl_multi_select($mh);
usleep(1);
}
sleep(1);
foreach($arr as $curl) {curl_multi_remove_handle($mh, $curl);}
curl_multi_close($mh);
foreach($arr as $key=>$curl) {
$result = curl_multi_getcontent($curl);
$dat = simplexml_load_string($result);
check_time($dat, $rows[$key], $fp);
}
当请求数量较少时它工作正常,但当它增长时一些卷曲不会带回适当的数据。即它们 return 为空,我猜是因为服务器在任何事情发生之前都经过了..
我该怎么做才能完成这项工作?我在 php 或服务器方面没有经验,并且很难浏览文档..
如果我创建另一个 php 文件,在其中我卷曲到 API 来处理数据,并且 multi_curl php 文件,它会工作吗更好的? (因为在那种情况下,某些调用不 return 数据就没那么重要了。这会不会使我的服务器不断超载?