解析php多线程下载远程多个文件
2013-06-25 00:00
676 查看
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; }
相关文章推荐
- 解析php多线程下载远程多个文件的实例代码
- 解析php多线程下载远程多个文件
- php多线程下载远程多个文件
- 基于select I/O模型的远程目录浏览与多线程文件下载
- nginx服务器访问时没解析PHP,直接下载php文件
- PHP代码实现远程下载文件到本地的函数
- PHP实现从远程下载文件的方法
- php下载远程文件类(支持断点续传)
- Android 多线程下载文件原理霸气解析介绍 -----文件的下载(3)
- apache不能解析php文件提示403或者下载php文件
- php远程抓取(下载)文件到本项目指定目录中
- php下载远程大文件(获取远程文件大小)
- php远程下载文件
- 【PHP开发】远程文件(图片)下载
- PHP实现从远程下载文件的方法
- Ubuntu下apache2无法解析php文件,浏览器提示下载所要打开的php文件
- PHP文件的上传下载中,全局变量$_FILES的作用及解析
- php curl流方式远程下载大文件
- php下载远程文件代码(curl ,支持重定向)
- php带密码功能并下载远程文件保存本地指定目录 修改加强版