Laravel 使用EC2生成PDF,向用户提供公共URL

Laravel 使用EC2生成PDF,向用户提供公共URL,laravel,laravel-5,Laravel,Laravel 5,我开发了一个应用程序,允许用户选择多个交易;这些都与PDF文件直接相关 当用户多重选择并打印它们时,这些PDF文件将合并为一个较长的文件,以便于打印 目前,事务PDF是根据请求生成的,PDF合并也是如此 我正试图通过亚马逊的基础设施来扩展这种中继,我遇到了一些问题 我应该为每个事务生成PDF实现一个队列吗?如果是这样,我如何为用户提供无缝体验?我们不想让他们等 我可以使用EC2为我生成这些PDF文件吗?如果是这样,我可以为用户提供一个公共链接,直接从Amazon下载文件,而不是使用我们的资源。

我开发了一个应用程序,允许用户选择多个交易;这些都与PDF文件直接相关

当用户多重选择并打印它们时,这些PDF文件将合并为一个较长的文件,以便于打印

目前,事务PDF是根据请求生成的,PDF合并也是如此

我正试图通过亚马逊的基础设施来扩展这种中继,我遇到了一些问题

我应该为每个事务生成PDF实现一个队列吗?如果是这样,我如何为用户提供无缝体验?我们不想让他们等 我可以使用EC2为我生成这些PDF文件吗?如果是这样,我可以为用户提供一个公共链接,直接从Amazon下载文件,而不是使用我们的资源。 非常感谢

编辑更多详细信息

用户通过常规表单输入一些信息 系统使用提供的文档信息为每个请求生成PDF 系统生成的PDF保存在Amazon S3下 我们提供了一个API,允许您一次打印多个PDF,为此,我们将S3中选定的PDF文件合并到一个文件中,以便于打印 当您多重打印文档时,会打开一个新窗口,该窗口是您直接合并的文件,用户需要等待大约20秒才能显示。 我们可以在Amazon基础设施上利用用于生成PDF的资源,但我们需要保持相同的流程,这意味着,我们应该向用户提供一个即时公共链接,以下载和打印文件。
基于您的理解,我认为您只需要在用户请求文件后立即创建链接。但是,您希望同时创建PDF合并。基于我的理解,我有这样做的想法,可能在你们的情况下也行

首先从一些逻辑开始创建唯一的pdf文件名,用随机字符串表示文件名。同时在后台生成PDF,但PDF的名称应与您在第一步中创建的名称相同。这将为用户提供文件的即时名称和下载链接。但是,您的文件创建仍在进行中

确保使用PHP时使用线程,使用Node.JS时使用事件循环同时运行这两个步骤。这将避免找不到文件时出现404错误


将文件从EC2传输到S3也会增加延迟。但是,如果您想保留文件以供以后或将来多次使用,那么S3是一个好主意,因为它可以简单地为PDF文件提供服务,以加快交付速度。正如我们所知,S3用于静态媒体存储。否则,简单地计算所有内容并在EC2上生成文件听起来有点太宽泛了。你能说得更具体些吗?你的代码在做什么?你需要解决的问题有哪些?刚刚更新了我的问题,谢谢你的时间!你不能把结果放在S3中吗?我现在正在使用S3作为整个项目的云主机:谢谢,这很好,因为这就是我所做的。当您点击API端点时,您会请求一组工作单ID。让我们说1,2,3。因此,我对每一个文件进行迭代,并为每一个文件生成一个临时PDF文件。这是必要的,因为所有文件都有不同的页眉、页脚、页面计数器、设计等。然后我收集这3个生成的文件,并将它们合并成一个大的PDF文件。所有文件都存储在S3中,我将以直接下载的形式返回PDF内容,内容类型为headersComment。对不起,我的样式已被删除。我的问题是,如何衡量这一点?我现在使用EC2,S3作为存储,但处理文件需要20秒,如果有10个客户端点击它,它将严重滞后。我正在阅读并考虑使用负载平衡器+EC2是的,负载平衡器可以工作,但使用线程可能会解决这个问题。