我必须将〜5,000张图像保存到磁盘,而且我的脚本运行速度非常慢。其中,我的脚本包含一个foreach
循环,用于将图像保存到磁盘。我想问题是file_put_contents
函数,因为当我评论它时,一切都很好。
这是我的代码:
file_put_contents($pathimg . '.jpg', file_get_contents($url));
file_put_contents($pathimg . '.jpg', file_get_contents($url3));
有没有办法更快地保存这些图像?
答案 0 :(得分:1)
您发布的代码是在同一行中执行file_get_contents和file_put_contents。您看到的速度很慢可能是图像下载(file_get_contents)或磁盘写入(file_put_contents) - 但是,写入速度很可能与将图像写入磁盘的速度相差无几。
您可能应该分别对它们进行基准测试,以找出导致缓慢行为的原因。
答案 1 :(得分:0)
您可以使用更快的CURL。这是您可以使用的功能。
function grab_image($url,$saveto){
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$raw=curl_exec($ch);
curl_close ($ch);
if(file_exists($saveto)){
unlink($saveto);
}
$fp = fopen($saveto,'x');
fwrite($fp, $raw);
fclose($fp);
}
确保在php.ini中启用allow_url_fopen。