繁体   English   中英

S3 Bucket Amazon问题

[英]S3 Bucket Amazon issue

1)我有上传表格

2)它将文件上传到我的本地存储move_uploaded_file。

3)它使用zend putObject函数将文件移动到s3对象。

一切正常,直到我的文件大小在30Mb到40Mb之间。 问题是,当我尝试上传较大的文件(例如80 Mb,100 Mb左右)时,移至s3的文件要花一些时间才能完成上传。 我的代码是这样的:

$orginalPath = APPLICATION_PATH."/../storage/".$fileName;
move_uploaded_file($data['files']['tmp_name'], "$orginalPath");

$s3 = new Zend_Service_Amazon_S3($accessKey, $secretKey);

$s3->putObject($path, file_get_contents($orginalPath),
    array(Zend_Service_Amazon_S3::S3_ACL_HEADER =>Zend_Service_Amazon_S3::S3_ACL_PUBLIC_READ));

您能帮我处理流大文件的问题吗?

$s3->registerStreamWrapper("s3");


file_put_contents("s3://my-bucket-name/orginal/$fileName", file_get_contents($orginalPath));

但是没有运气,移动文件也需要很长时间。

因此,是否有一种有效的方法将文件快速移动到s3存储桶?

答案是一个工人过程。 您可以在服务器启动时通过PHP CLI启动PHP worker脚本,也许在您的机器上运行GearmanClient php扩展名和gearman服务器。 然后,您将后台作业排队以将文件上传到S3,而主站点的PHP代码在发布该作业后返回成功,并且文件在后台愉快地上传,而前台站点则以快乐的方式继续上传。 另一种执行此方法的方法是让另一台服务器执行所有此任务,而您的主站点仍保持利用率,而无需执行此过程。 我现在正在做。 它运作良好。

您可以考虑使用更直接的POST至S3功能 适用于PHP的AWS开发工具包具有一个类,可帮助生成表单数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM