PHP中的海量图像下载脚本

use*_*346 5 php download

我需要一个.php脚本,它将从另一个站点下载大量图像.图像是拇指 - 每个大小约20KB.我已经开发了自己的脚本,但遗憾的是它只是滞后于我的服务器而且差点杀死它迫使我重新启动它.

每次执行大约有100张图片,.jpg文件,~20KB /文件.

我的剧本:

$count = 0;
foreach ($files as $file) {
$count++;
$url = $file;
$dl_place = '/home/lulz/'.$count.'.jpg';

$ch = curl_init($dl);
$fp = fopen($path, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
}
Run Code Online (Sandbox Code Playgroud)

如你所见,我正在使用curl,但如果它比现在更好用,我愿意使用任何东西.

Bra*_*rad 2

很可能,减缓的是设置所有这些请求所需的时间。您应该考虑使用并行 cURL一次下载多个。源代码: https ://github.com/petewarden/ParallelCurl/blob/master/parallelcurl.php

$pc->startRequest('http://www.whatever.com/someimage.jpg', 'your_callback_function');
Run Code Online (Sandbox Code Playgroud)

我还发现,使用库,您可以在回调中使用匿名函数而不是函数名称。例如,我用它来调用另一个带有 ID 号的函数。

$requestid=37;
$pc->startRequest(
    $url, 
    function($content, $url, $ch, $search) use $requestid {
        yourRealCallback($content, $url, $ch, $search, $requestid);
    }
);
Run Code Online (Sandbox Code Playgroud)

这利用了带有闭包的匿名函数,因此如果您正在搜索 URL 数据库,您可以获得结果 ID(您在 for 循环或其他内容中指定......此处硬编码为“37”以进行演示)。