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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

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

10个月前 评论

好像有个方法是 curl_file_create

10个月前 评论

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