Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用作业队列上载到AWS S3存储桶_Php_Amazon Web Services_Amazon Ec2_Amazon S3_Amazon Sqs - Fatal编程技术网

Php 使用作业队列上载到AWS S3存储桶

Php 使用作业队列上载到AWS S3存储桶,php,amazon-web-services,amazon-ec2,amazon-s3,amazon-sqs,Php,Amazon Web Services,Amazon Ec2,Amazon S3,Amazon Sqs,我正在开发一个应用程序,它将在AWS上的弹性环境中运行(具有自动缩放功能的Ec2实例)。所有的应用程序都是用PHP开发的 该应用程序的核心是将文件安全地存储在S3存储桶中。由于用户不需要知道文件保存在哪里,所以我认为我可以将文件临时存储在EC2实例中,然后使用作业队列(Amazon SQS)将其异步移动到S3,以避免重复等待时间,并更好地支持S3问题(这些问题并不常见,但也可能发生) 我的问题是: 这个方法听起来不错还是我遗漏了什么 当处理队列中的作业时,工作者实例必须连接到原始s3实例,从中检

我正在开发一个应用程序,它将在AWS上的弹性环境中运行(具有自动缩放功能的Ec2实例)。所有的应用程序都是用PHP开发的

该应用程序的核心是将文件安全地存储在S3存储桶中。由于用户不需要知道文件保存在哪里,所以我认为我可以将文件临时存储在EC2实例中,然后使用作业队列(Amazon SQS)将其异步移动到S3,以避免重复等待时间,并更好地支持S3问题(这些问题并不常见,但也可能发生)

我的问题是:

  • 这个方法听起来不错还是我遗漏了什么
  • 当处理队列中的作业时,工作者实例必须连接到原始s3实例,从中检索文件,然后将其上载到s3
  • 如何避免自动缩放时出现问题?在我将文件存储在S3存储桶中之前,可以删除一个实例

  • 理想情况下,您不希望主应用服务器在文件上传过程中被捆绑(既到应用服务器,又到S3)

    存在就是为了避免这种情况。您可以直接从客户端将文件上传到S3,让amazon担心如何处理并发用户的多次上传。它可以让你的应用程序做它最擅长的事情,而不必担心上传本身

    讨论了同样的问题,有几个可定制的插件,比如FineUploader,它可以用进度条等来解决这个问题


    这完全消除了使用任何类型队列的需要。如果您需要在上传后执行某些簿记操作,您只需在上传完成并包含文件信息等后向服务器发出ajax调用即可。它还应解决由于自动缩放而删除实例时可能遇到的任何问题,因为所有内容都是客户端的。

    预期文件有多大?ec2实例和s3之间的带宽将远高于大多数用户和s3。通常我在上传时直接传输文件。我将作业用于需要对文件进行的任何后期处理。它们不应大于15mb。但是使用SQS队列实现这一点可以让我处理s3宕机或问题。通过添加SQS,现在您必须担心SQS失败、作业未被拾取或实例在作业传输文件之前被终止。15MB一点也不大。我会简单地认为上传失败或不完整,如果它不能被转移到S3上传。对于这种大小的文件,您上传到s3的时间只有几秒钟。