PHP curl_multi_exec()不带curl_multi_select()的示例?

unhi4e5o  于 2023-04-28  发布在  PHP
关注(0)|答案(1)|浏览(139)

有没有人有一个使用curl_multi_exec()而不使用curl_multi_select()的例子?我们的一个服务器仍然使用Centos 5和PHP5。1.x.
此外,该示例应该允许在每个人完成之前处理句柄。
我的实现有问题的站点没有Content-Length参数和请求主体超过缓冲区大小(16 k)。如果没有来自服务器的Content-Length,curl_getinfo()['download_content_length']总是-1。

jdgnovmf

jdgnovmf1#

就像这样

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

for ($i = 0; $i < 10; $i++) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "https://example.com/request/$i");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_multi_add_handle($curlMulti, $ch);
  $handles[] = $ch;
}

do {
  $curlMultiStatus = curl_multi_exec($curlMulti, $runningHandles);

  // Process completed handles
  while ($completedHandle = curl_multi_info_read($curlMulti)) {
     $handle = $completedHandle['handle'];
     $response = curl_multi_getcontent($handle);
     $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
     echo "Handle completed: $httpCode\n";
     curl_multi_remove_handle($curlMulti, $handle);
     curl_close($handle);
  }
    
} while ($curlMultiStatus == CURLM_CALL_MULTI_PERFORM || $runningHandles);

curl_multi_close($curlMulti);

相关问题