在服务器之间分发PHP PDF生成

时间:2014-11-21 09:54:22

标签: php pdf amazon-web-services amazon-ec2

我必须从带有图像的产品目录数据库生成5-10MB的PDF。

我一直在使用dompdf(以及其他一些)效果很好的人。麻烦的是执行所需的时间,大约20秒。

我想知道是否有办法将这些任务卸载到某种形式的分布式计算服务,例如亚马逊的产品(弹性beanstalk可能?)。我们可以在几个实例中生成某些页面,然后在完成任务时将它们拼接在一起。

有人对此有任何服务建议吗?

2 个答案:

答案 0 :(得分:0)

架构的最佳方式(考虑可扩展性因素)将使用SQS,SNS,S3,EC2等组件。这使您可以将处理/ EC2容量增加到扩展/扩展,而无需在其他服务上进行大量工作。

您可以从使用pdf生成器(如带有门户网站的

  1. 用户使用自定义开发的门户网站(用完EC2)
  2. 启动pdf创建作业
  3. 成功启动/确认pdf作业 - 您可以使用作业ID
  4. 提示用户
  5. 在EC2中运行的进程可以完成pdf作业并将其放回S3
  6. 成功完成EC2后,作业可以触发SNS通知/ SES电子邮件
  7. 可以在SimpleDB或DynamoDb等数据库服务中跟踪作业状态和运行状态
  8. 可以使用带有作业ID
  9. 的作业门户从S3获取已完成的PDF

答案 1 :(得分:0)

弹性beanstalk(EB)是部署工具,我不认为它适合你的情况。

您所谈论的想法与现有的aws服务transcoding非常相似,但这适用于音频和视频。也许您可以花时间研究转码的工作原理,并为您的pdf生成器做同样的事情。或者您可以联系AWS工程师以获取您的想法,也许他们可以为您开发新服务。这似乎是一个普遍的要求。

我当前对你的问题的想法是设置@NAveen推荐的缩放环境,但更关注自动调整。

  • 使用用户数据设置launch configuration(包括如何安装Web服务和pdf生成器)和所需的实例类型(微型,小型或大型等),ELB(弹性负载均衡器在此步骤中设置为孔)
  • 将此launch configuration分配给自动缩放组,您可以设置最小实例和最大实例大小。
  • 设置向上扩展和缩小规则以增加/减少ec2实例数。

因此,当请求发送到ELB时,它将分配给附加实例并将负载分配给每个实例,并将使用实际流量自动扩展实例编号。