在内存较低的S3网址上创建AWS EC2上的zip文件?

时间:2015-10-05 19:25:19

标签: php amazon-web-services amazon-s3 amazon-ec2 zip

我有一个包含文件的Amazon S3存储桶,并希望在Amazon EC2上生成强制下载zip文件(使用Amazon Linux,类似于CentOS / Redhat Linux)。

我已经在(post)数组中签名了所有网址,现在我正在使用此代码。

    <?php
    ini_set('max_execution_time', 300); //300 seconds = 5 minutes
    ini_set('memory_limit', '8192M');

    $imageNumber = 0;
    # create new zip opbject
    $zip = new ZipArchive();

    # create a temp file & open it
    $tmp_file = tempnam('.','');
    $zip->open($tmp_file, ZipArchive::CREATE);
    foreach ($_POST['text'] as $key => $value) {
        //Get extension
        $ext = pathinfo(parse_url($value, PHP_URL_PATH), PATHINFO_EXTENSION);

        # download file
        $download_file = file_get_contents($value);

        #add it to the zip
        $zip->addFromString(basename($imageNumber.'-image.'.$ext),$download_file);

        $imageNumber++;
    }

    # close zip
    $zip->close();

    # send the file to the browser as a download
    header('Content-disposition: attachment; filename=download.zip');
    header('Content-type: application/zip');
    readfile($tmp_file);
    ?>

我的目标是尽可能降低EC2的成本,现在我的实例只有4GB。正如你所看到的,我已经增加了内存限制,问题是我有50-100个文件,每个大约5 MB,这是每个Zip文件几百MB,如果有几个人生成一个zip文件当然是个问题同时。

是否有更好的解决方案(更少的内存使用和EC2上的低成本)?

0 个答案:

没有答案