解析php多線程下載遠(yuǎn)程多個文件
更新時間:2013年06月25日 17:07:53 作者:
本篇文章是對php多線程下載遠(yuǎn)程多個文件的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
復(fù)制代碼 代碼如下:
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;
}
相關(guān)文章
php獲取$_POST同名參數(shù)數(shù)組的實(shí)現(xiàn)介紹
本篇文章是對php獲取$_POST同名參數(shù)數(shù)組的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP數(shù)組生成XML格式數(shù)據(jù)的封裝類實(shí)例
這篇文章主要介紹了PHP數(shù)組生成XML格式數(shù)據(jù)的封裝類,結(jié)合完整實(shí)例形式分析了php針對數(shù)組的遞歸遍歷與XML格式數(shù)據(jù)轉(zhuǎn)換的相關(guān)操作技巧,需要的朋友可以參考下2016-11-11php模擬asp中的XmlHttpRequest實(shí)現(xiàn)http請求的代碼
為了自己方便模擬asp里面的xmlhttp組件寫的phphttp請求類,基本的功能都實(shí)現(xiàn)了,支持gzip壓縮2011-03-03php.ini save_handler 修改不生效的解決辦法
這篇文章主要介紹了php.ini save_handler 修改不生效的解決辦法,需要的朋友可以參考下2014-07-07mayfish 數(shù)據(jù)入庫驗(yàn)證代碼
mayfish 可以靈活的自定義將要執(zhí)行寫入的數(shù)據(jù)內(nèi)容的校驗(yàn)規(guī)則,以減少開發(fā)人員手動對每一個字段的數(shù)據(jù)進(jìn)行校驗(yàn)的麻煩。2010-04-04