使用大量图像时,file_put_contents()非常慢

时间:2015-02-26 13:35:47

标签: php image file

我必须将〜5,000张图像保存到磁盘,而且我的脚本运行速度非常慢。其中,我的脚本包含一个foreach循环,用于将图像保存到磁盘。我想问题是file_put_contents函数,因为当我评论它时,一切都很好。

这是我的代码:

file_put_contents($pathimg . '.jpg', file_get_contents($url));
file_put_contents($pathimg . '.jpg', file_get_contents($url3));

有没有办法更快地保存这些图像?

2 个答案:

答案 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。