源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

解析php多线程下载远程多个文件

  • 时间:2021-07-18 20:30 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:解析php多线程下载远程多个文件
[u]复制代码[/u] 代码如下:
function remote($urls, $name = '', $path = '', $dir = './images/') {  if (!is_array($urls) or count($urls) == 0) {   return false;  }  dmkdir($dir);  $curl = $text = array();  foreach($urls as $k => $v) {   if (!empty($v) && preg_match("~^http~i", $v)) {    $nurl[$k] = trim(str_replace(' ', "%20", $v));    $curl[$k] = curl_init($nurl[$k]);    curl_setopt($curl[$k], CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );    curl_setopt($curl[$k], CURLOPT_RETURNTRANSFER, 1);    curl_setopt($curl[$k], CURLOPT_HEADER, 0);    curl_setopt($curl[$k], CURLOPT_CONNECTTIMEOUT, 20);    if(!isset($handle)){     $handle = curl_multi_init();    }    curl_multi_add_handle($handle, $curl[$k]);   }   continue ;  }  $active = null;  do{   $mrc = @curl_multi_exec($handle, $active);  } while ($mrc == CURLM_CALL_MULTI_PERFORM);  while ($active && $mrc == CURLM_OK) {   if (curl_multi_select($handle) != -1) {    do {     $mrc = curl_multi_exec($handle, $active);    } while ($mrc == CURLM_CALL_MULTI_PERFORM);   }  }  foreach ($curl as $k => $v) {    if (curl_error($curl[$k]) == "") {     if ($k == 0) {      $fname[$k] = strtolower($name . '.' . pathinfo($urls[$k], PATHINFO_EXTENSION));     } else {      $fname[$k] = strtolower($name . '_' . $k . '.' . pathinfo($urls[$k], PATHINFO_EXTENSION));     }     $text[$k] = (string) curl_multi_getcontent($curl[$k]);     $filedir[$k] = $dir.'/' . $fname[$k];    if (file_put_contents($filedir[$k], $text[$k])) {     $filepath[$k] = $path . $fname[$k];    }   }   curl_multi_remove_handle($handle, $curl[$k]);   curl_close($curl[$k]);  }  curl_multi_close($handle);  return $filepath; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部