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);
fclose 早了吧,在 curl_multi_close 的时候再 fclose,另外,CURL 可以传文件路径呀,你没必要去打开文件呐
好像有个方法是
curl_file_create