用 libcurl 库将多个文件上传 ftp 服务器上, curl_easy_perform 太耗时了,怎么解决?

2017-03-16 10:57:11 +08:00
 wbing

这是设置的参数

curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_USERPWD, user_key);
curl_easy_setopt(curl, CURLOPT_READDATA, file);
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
curl_easy_setopt(curl, CURLOPT_INFILESIZE, get_file_size(file));
curl_easy_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS, 1);
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);

文件不大,只有 10K 左右,网络正常,但每次curl_easy_perform 耗时都是2000+毫秒

2768 次点击
所在节点    问与答
4 条回复
BOYPT
2017-03-16 11:09:12 +08:00
curl_setopt($curlhandle, CURLOPT_VERBOSE, true);

设置 verbose 看看具体 log ,耗时在什么地方
wbing
2017-03-16 19:27:06 +08:00
@BOYPT

```
< 229 Entering Extended Passive Mode (|||65444|)
*Trying 127.0.0.1...
* Connecting to 10.0.0.182 <10.0.0.182> port 65444
```

卡在这了,搜了下网上也有出现 Entering Extended Passive Mode 的问题
BOYPT
2017-03-16 23:17:18 +08:00
@wbing 应该查到原因吧?
估计是 NAT 导致的 EPSV 兼容问题,配置 CURLOPT_FTP_USE_EPSV False 应该可以解决
wbing
2017-03-17 08:28:17 +08:00
@BOYPT 对,就是这个原因。昨晚设置这个参数为 false 后就正常了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/347850

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX