需要调用curl_multi_exec多少次?

2024-01-02

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

<?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_multi_exec 多少次?是否需要为传输的每一点数据调用它?它使用了大量的CPU,我认为这是因为它的“忙循环”太多了。那么我可以添加 sleep(5);在每个循环结束时使用更少的 cpu 周期,或者这会大大减慢请求速度吗?

我会使用curl multi_select,但我不能,因为有多个curl_multi_exec正在处理。


curl_multi_exec() 读取数据并将数据写入套接字。当无法写入或读取时它会停止。 因此,所需的调用次数取决于要传输的数据量和网络速度。 curl_multi_select() 等待套接字变得可读或可写。

您应该使用curl_multi_select()并将所有主机放在一个多句柄中。 查看卷曲获取信息() or curl_multi_info_read()如果您需要知道各个请求的持续时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要调用curl_multi_exec多少次? 的相关文章

随机推荐

  • 我如何告诉 PyCUDA 使用哪个 GPU?

    我的机器中有两张 NVidia 卡 并且都支持 CUDA 当我运行示例脚本以开始使用此处所示的 PyCUDA 时 http documen tician de pycuda http documen tician de pycuda 我得到
  • 使用 ECS Fargate 执行 Step Function“任务”

    在 Re Invent 2018 中 AWS 似乎推出了与 Step Functions 的新集成 其中包括 ECS Fargate 支持 https docs aws amazon com step functions latest dg
  • c_include_path 与 ld_library_path

    在 Ubunutu 12 04 或 Springdale 6 4 上 使用 gcc 和 g 有什么区别C INCLUDE PATH or CPLUS INCLUDE PATH and LD LIBRARY PATH 是个LD一个仅在运行时使
  • 异常消息是英文的吗?

    我们通过将 Exception Message 写入文件来记录系统中发生的任何异常 然而 它们是根据客户的文化编写的 土耳其的错误对我来说意义不大 那么我们如何才能在不改变用户文化的情况下用英语记录错误消息呢 这个问题可以部分解决 框架异常
  • 什么是接口断言?

    我刚刚遇到了这段代码 type Logger interface Debug msg string keyvals interface error Info msg string keyvals interface error Error
  • Python 使用 tenacity 模块重试

    我很难获得坚韧图书馆 https github com jd tenacity按预期工作 下面测试中的重试根本不会触发 我希望每 5 秒重试一次 并让日志文件反映重试尝试 import paramiko import tenacity fr
  • 是否可以设置规则的优先级以避免“最长最早”的匹配模式?

    另一个简单的问题 有没有办法告诉 flex 更喜欢匹配短事物的规则而不是匹配长事物的规则 我找不到任何关于这方面的好的文档 这就是我需要它的原因 我解析一个伪语言文件 其中包含一些与控制指令相对应的关键字 我希望它们成为绝对优先级 这样它们
  • WebAPI OData 日期时间错误

    同样的问题在这里被问到http forums asp net post 5243863 aspx http forums asp net post 5243863 aspx但还没有答案 像 filter TimeRequested eq d
  • 通过 terraform 部署的 AWS API Gateway 和 Lambda 函数 -- 由于配置错误而执行失败:Lambda 函数的权限无效

    我正在通过 Terraform 一起部署 API 网关和 Lambda 函数 而 Lambda 函数应该由 API 网关触发 资源成功部署后 我测试 API 网关并得到响应 message 内部服务器错误 API网关的实际日志显示 由于配置
  • 使 html 表格中的第一列固定,下一列可滚动

    我有一个只有两列的表 我想让第一列固定 下一列在所有行中可滚动 它应该作为一个整体水平滚动 而不是单个列 可以有数百行 我这里有一个演示代码Jsfiddle http jsfiddle net Yw679 1 我对 css 样式接触不多 你
  • 我们可以在其他注释中使用 spring 表达式(spel)吗?

    我希望能够做到这一点 Controller RequestMapping handlerMappingPaths security public class SecurityController etc for instance to re
  • 为什么Scala的尾递归比Java慢?

    使用尾递归进行简单加法的 Scala 代码 def add list List Int sum Int Int Thread dumpStack if list isEmpty sum else val headVal list head
  • C++:Dll 卸载问题

    如何确保 dll 中的任何对象存在时不会被卸载 问题是 当我使用显式内存管理时 我可以在释放 dll 之前删除 dll 对象 但是使用智能指针 我无法控制被破坏的顺序 这意味着 dll 可能会首先被释放 从而在尝试释放时导致崩溃其他对象之一
  • 检查 Google App Engine 中任务队列的状态

    我将多个任务放入任务队列中 并想知道特定任务何时完成 我在 API 中没有找到任何关于回调或检查任务状态的内容 所以我想我应该看看其他人做了什么 或者是否有解决方法 或官方 检查方法 我不关心单个任务 如果有帮助的话 我会放入 6 个不同的
  • CSS 网格:动态跨越最后一列

    是否可以自动跨越最后一列以占据网格中的剩余空间 基本上我正在努力实现这一目标 row display grid grid template columns repeat 3 1fr col background blue padding 2
  • 如何在java中使用谷歌云数据流从云存储读取时跳过csv文件中的回车符

    我有一个 CSV 文件 其中每行都包含新的回车符 n 使用 Apache Beam 的 TextIO read 函数从云存储读取 CSV 文件时 它会将 n 视为新记录 我怎样才能克服这个问题 我尝试过扩展 filebasedsource
  • 区分 pyparsing 中的匹配

    我想用 pyparsing 解析一些单词和一些数字 简单就对了 from pyparsing import A Word nums setResultsName A B Word alphas setResultsName B expr O
  • 如何使用 RSpec 忽略或跳过测试方法?

    请指导如何使用 RSpec 禁用以下测试方法之一 我正在使用 Selenuim WebDriver RSpec 组合来运行测试 require rspec require selenium webdriver describe Automa
  • 使用 JQUERY 添加/删除 css 文件

    再会 我想根据列表的大小添加和删除CSS文件 我的代码如下 size storedList ready function var list size size storedList attr value if list size lt 4
  • 需要调用curl_multi_exec多少次?

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