【问题标题】:Uploading images to amazon s3将图像上传到亚马逊 s3
【发布时间】:2012-07-07 02:24:11
【问题描述】:

我正在将图像上传到 amazons3 存储桶,但执行 10 张图像需要 2 分钟,但我必须上传 10GB 的图像,我应该收到每个图像更新的更新,确保其正常工作....

  while($file=readdir($handle)):
            if(is_file($file)){
                $extn = explode('.',$file);
                $extn = array_pop($extn);
                if (in_array(strtolower($extn),$includedExtn)) {
                    set_time_limit(0);
                    if ($s3->putObjectFile($file, $bucketName, baseName($file), S3::ACL_PUBLIC_READ)) {
                        echo "<br/>";
                        echo "S3::putObjectFile(): File copied to {$bucketName}/".baseName($file);
                    } else {
                        echo "S3::putObjectFile(): Failed to copy file\n";
                    }
                }
            } else {
                echo "No more files left";
            }
    endwhile;

【问题讨论】:

    标签: php amazon-s3


    【解决方案1】:

    看起来您使用的代码与我使用的代码几乎相同。尽管我通过同时运行相同的脚本(并行多次)获得了更快的结果,但我的速度也有同样的问题,似乎每个 put 可能是有限的,但是对并发 PUT 的数量没有限制(或者如果有我还没找到)。我通常从命令行运行脚本 6 次。

    您只需编写代码以确保它不会多次上传同一个文件,否则您将为每个文件产生多次费用(因此,请在您的数据源中添加分段等内容)。我在几个脚本中include它,每个脚本都指定了它应该从数据库访问的唯一扇区。

    【讨论】:

    • set_time_limit(0) 确保脚本不会在 30/60/90(无论您的服务器设置为多少)秒后终止,这对于长时间上传很重要。
    • 啊,我明白了,我不知道零等于无限制,谢谢。我通常使用set_time_limit(2) 之类的东西,所以以防万一它卡在某个东西上(比如远程端的网络中断或无限循环),它不会永远等待无法完成的事情,它只会死掉。我猜这只是一个故障安全措施。
    猜你喜欢
    • 2017-08-01
    • 1970-01-01
    • 2016-01-11
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    相关资源
    最近更新 更多