Php 需要调用curl\u multi\u exec多少次?

Php 需要调用curl\u multi\u exec多少次?,php,curl,curl-multi,Php,Curl,Curl Multi,我使用curl_multi和multi将文件上传到不同的服务器。每台服务器都有多个需要上传的文件,所以我对每台服务器都有一个curl_multi请求。当我执行curl\u多个句柄时,我只是在同一个循环中执行所有curl\u多个句柄,如下所示: <?php do { $continue_running=false; foreach($handles as $host => $handle) { if(!is_resource($handle[0])) { die("

我使用curl_multi和multi将文件上传到不同的服务器。每台服务器都有多个需要上传的文件,所以我对每台服务器都有一个curl_multi请求。当我执行curl\u多个句柄时,我只是在同一个循环中执行所有curl\u多个句柄,如下所示:

<?php
do {

 $continue_running=false;

 foreach($handles as $host => $handle) {

  if(!is_resource($handle[0])) {
   die("\nHandle is not a resource!\n");
  }

  if($running_{$host}) {
   if(curl_multi_exec($handles[$host][0], $running_{$host}) != CURLM_OK) {
    die("\ncurl_multi_exec failed!\n");
   }
   $continue_running=true;
  }

  if(!$running_{$host} && !$done_{$host}) {
   echo "$host finished in ".(microtime(1)-$start)." seconds\n";
   $done_{$host}=true;
  }
 }

} while ($continue_running);
?>

我想知道的是,在一个curl请求中,curl\u multi\u exec实际上需要被调用多少次?传输的每一点点数据都需要调用它吗?它使用了大量的cpu,我认为这是因为它的“忙循环”太多了。所以我可以加上睡眠(5);在每个循环结束时,使其使用更少的cpu周期,或者这会大大降低请求的速度

我会使用curl\u multi\u select,但我不能,因为正在处理多个curl\u multi\u exec。

curl\u multi\u exec()读取数据并将数据写入套接字。当它无法写入或读取时停止。 因此,所需呼叫的数量取决于要传输的数据量和网络速度。curl\u multi\u select()等待套接字变为可读写

您应该使用curl\u multi\u select()并将所有主机放在一个多句柄中。 如果需要知道单个请求的持续时间,请选中curl\u getinfo()curl\u multi\u info\u read()