ホームページ  >  記事  >  バックエンド開発  >  PHP を解析するマルチスレッドのリモート複数ファイルのダウンロード_PHP チュートリアル

PHP を解析するマルチスレッドのリモート複数ファイルのダウンロード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:03:34827ブラウズ

复制代码代码如下:

function Remote($urls, $name = '', $path = '', $dir = './images/') {
if (!is_array($urls) ) または 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]);
}
続行 ;
}
$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] = strto lower($name . '.' . pathinfo ($urls[$k], PATHINFO_EXTENSION));
} else {
$fname[$k] = strto lower($name . '_' . $k . '.' . pathinfo($urls[$k], PATHINFO_EXTENSION) ));
}
$text[$k] = (文字列)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;
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327835.html技術記事复制代码代码如下: function remote($urls, $name = '', $path = '', $dir = './images/') { if (!is_array($urls) または count($urls) == 0) { false を返します。 dmkdir($dir); $curl = $...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。