解析php多线程下载远程多个文件
2015-01-24信息快讯网
本篇文章是对php多线程下载远程多个文件的方法进行了详细的分析介绍,需要的朋友参考下
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; }
关于js和php对url编码的处理方法
PHP中is_file不能替代file_exists的理由
PHP URL参数获取方式的四种例子
php使用curl抓取qq空间的访客信息示例
Php中使用Select 查询语句的实例
PHPMailer的主要功能特点和简单使用说明
smarty获得当前url的方法分享
PHP中$_FILES的使用方法及注意事项说明
php中simplexml_load_string使用实例分享
php中url函数介绍及使用示例
php curl_init函数用法
curl实现站外采集的方法和技巧
php使用curl检测网页是否被百度收录的示例分享
php curl post 时出现的问题解决
使用dump函数,给php加断点测试
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
解析PHP中的file_get_contents获取远程页面乱码的问题
深入file_get_contents函数抓取内容失败的原因分析
通过PHP current函数获取未知字符键名数组第一个元素的值
解析php dirname()与__FILE__常量的应用
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
解析php中获取url与物理路径的总结
浅析使用Turck-mmcache编译来加速、优化PHP代码
解析php中die(),exit(),return的区别
PHP的curl实现get,post和cookie(实例介绍)
深入PHP curl参数的详解
解析php curl_setopt 函数的相关应用及介绍
探讨:parse url解析URL,返回其组成部分
利用curl 多线程 模拟 并发的详解
基于PHP CURL用法的深入分析