php curl curl_multi_exec put 如何批量上传文件

foreach ($urls as $k => $url) {
    $fh_res = fopen(xxx, 'rb');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_PUT, true);
    curl_setopt($ch, CURLOPT_INFILE, $fh_res);
    fclose($fh_res);
    curl_multi_add_handle($queue, $ch);
    $map[(string)$ch] = $url;
}
do {
    while (($code = curl_multi_exec($queue, $active)) == CURLM_CALL_MULTI_PERFORM);
    if ($code != CURLM_OK) {
        $error[] = $code;
        break;
    }
    while ($done = curl_multi_info_read($queue)) {
        $info = curl_getinfo($done['handle']);
        $error = curl_error($done['handle']);
        curl_multi_getcontent($done['handle']);   //获取内容
        curl_multi_remove_handle($queue, $done['handle']);
        curl_close($done['handle']);
    }
    if ($active > 0) {
        curl_multi_select($queue, 0.5);
    }
} while ($active);
curl_multi_close($queue);

出现下面的错误

curl_multi_exec(): CURLOPT_INFILE resource has gone away, resetting to default

如何获取fopen内容,传输完成,关闭请求fclose

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2

fclose 早了吧,在 curl_multi_close 的时候再 fclose,另外,CURL 可以传文件路径呀,你没必要去打开文件呐

1年前 评论

好像有个方法是 curl_file_create

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!