gpt4 book ai didi

php - 在 PHP 中同时下载文件列表

转载 作者:可可西里 更新时间:2023-10-31 22:43:16 26 4
gpt4 key购买 nike

使用 PHP,我创建了一个 CSV 文件数组,其中包含我要使用以下行下载的文件的 URL:

$urls = explode(',',file_get_contents('urls.csv'));

完成后,我使用以下代码块。

foreach($urls as $url){
$fname = 'not important right now ;)'
$fcon = fopen($fname,'w');
fwrite($fcon,file_get_contents($url));
fclose($fcon);
}

效果很好,它下载了文件中的所有文件!

但不幸的是,它没有我想要的那么高效。我想要 2,3 或 4 个同时下载以节省时间。我该怎么做?

最佳答案

如果您有权访问 curl,您可以使用 curl_multi_exec .首先将您的 $urls 数组分成您希望同时执行的组,然后使用 curl_multi_exec 处理每个组。

$all_urls = ['http://www.google.com',
'http://www.yahoo.com',
'http://www.bing.com',
'http://www.twitter.com',
'http://www.wikipedia.org',
'http://www.stackoverflow.com'];

$chunked_urls = array_chunk($all_urls,3); //chunk into groups of 3

foreach($chunked_urls as $i => $urls) {

$handles = [];
$mh = curl_multi_init();

foreach($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch);
$handles[] = $ch;
}

// execute all queries simultaneously, and continue when all are complete
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running);

foreach($handles as $handle) {
file_put_contents("/tmp/output",curl_multi_getcontent($handle),FILE_APPEND);
curl_multi_remove_handle($mh, $handle);
}

curl_multi_close($mh);

print "Finished chunk $i\n";
}

关于php - 在 PHP 中同时下载文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24354616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com