首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cURL将图像下载到ZipArchive

使用cURL将图像下载到ZipArchive
EN

Stack Overflow用户
提问于 2010-07-20 02:40:36
回答 1查看 1.3K关注 0票数 0

我正在尝试将图片下载到ZipArchive,通过他们的应用程序接口从社交网站下载,我使用以下代码:

代码语言:javascript
复制
...
public function downloadAlbumZip($album_name, $photos)
{
    $zip = new ZipArchive();
    $album_name = $this->_cleanAlbumName($album_name);
    $filename = 'album.zip';
    $file = tempnam(PHOTOS, "{$album_name}-").'.zip';

    if ($zip->open($file, ZIPARCHIVE::CREATE) === TRUE)
    {
        foreach ($photos as $photo) {
            $image = $photo['pid'] . '.jpg';
            $binary = $this->_getImage($photo['src']);
            $zip->addFromString($image, $binary);
        }

        $output = print_r($zip, true);
        $zip->close();

        exit('Zip Saved.<br /><a href="javascript:history.go(-1);">Back to Album Overview</a>');
    } else {
        die('Zip Failed.');
    }
}

private function _getImage($img)
{
    if ( function_exists('curl_init') )
    {
        $ch = curl_init($img);

        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);

        $rawdata = curl_exec($ch);
        curl_close($ch);

        return $rawdata;
    }
}
...

这是有效的,但非常慢,并经常以超时错误结束,有人能推荐一种方法来加快速度吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-20 02:46:45

您应该先下载所有图像,验证它们是否正常,然后在超时时重新下载。

你可以通过使用CURL_MULTI_EXEC并行下载图片来加快下载速度。

请记住,加快速度的关键是找出瓶颈在哪里。它正在压缩文件吗?如果是这样的话,您可以使用本机二进制文件并执行shell。它正在下载图像吗?是图片的大小吗?

您应该做一些分析,即使它只是回显time(),以查看哪些操作花费的时间最长。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3283958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档