【问题标题】:Curl FTP connection poolingCurl FTP 连接池
【发布时间】:2016-08-31 18:17:17
【问题描述】:

在我的应用程序中,我将 curl.exe 作为外部命令执行以从 FTP 文件夹中获取文件列表。我需要将多个文件夹扫描到列表中,所以我多次调用此命令将文件列表输出到本地目录。

curl ftp://my-ip:port/path/1234/ --user 用户名:密码 --list-only -o C:\localfolder\1234.txt

curl ftp://my-ip:port/path/8910/ --user 用户名:密码 --list-only -o C:\localfolder\8910.txt

所以我每个目录都有 1 个文件。我们不能使用通配符模式列出所有必需目录中的文件,因为它们没有模式,只是随机整数。

在大多数情况下,我需要扫描 200 个导演,但在某些情况下,我需要扫描几千到 9000 个(最多)。我对它没有任何问题,因为它运行完美,没有任何问题。除了在某些极端情况下,由于网络故障,我不会从 1 或 2 个目录中获取列表。

现在我正在考虑优化。这里可以做两个优化

我的应用程序级优化:我将创建一个包含多个调用的动态 bat 文件,而不是多次调用 curl.exe,这样我的应用程序将只调用一次,而批处理文件将具有实际的 curl 调用。

Curl 连接池: 如果 curl.exe 可能的话,这就是我正在寻找的内容。我前段时间在某处读到 curl 库像 PHP 一样支持连接池,但我不确定 curl 是否支持可执行文件具有该功能。如果我可以利用此功能(如果有的话),这可能是很好的性能改进。

【问题讨论】:

    标签: curl ftp


    【解决方案1】:

    根据 cURL 手册(在名为 PERSISTENT CONNECTIONS 的部分中):

    在单个命令行上指定多个文件将使 curl 传输 所有这些,按照指定的顺序一个接一个。

    libcurl 将尝试使用持久连接进行传输,以便 到同一主机的第二次传输可以使用与之前相同的连接 已经启动并在上一次传输中保持打开状态。这大大 减少除了第一次转移之外的所有连接时间 更好地利用网络。

    来源:https://curl.haxx.se/docs/manual.html

    有点像

    curl --user username:password --list-only ftp://my-ip:port/path/1234/ -o C:\localfolder\1234.txt ftp://my-ip:port/path/8910/ -o C:\localfolder\8910.txt
    

    应该做您正在寻找的东西(对于 2 个或更多 URL)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      相关资源
      最近更新 更多