一次性生成多个任务 or 在一个任务中多次处理?

发布于 2022-09-06 21:29:16 字数 391 浏览 27 评论 0

需求:上传Excel表,将Excel表格中的按行将数据导入到指定模板中,生成文件(word or pdf) 并提供打包下载;

暂时不讨论需求有多恶心(明明使用word邮件合并即可解决的问题。。。),我们还是得想办法解决啊。

将一条数据放在指定的模板生成pdf文件,打包下载,这些基本的都没什么问题。这里想请教的一个问题是:

我这里定义了一个队列处理生成pdf,是一次性将excel数据全部丢给队列,然后在handle中循环生成pdf?还是在response前端前将数据拆分成多个任务,循环加入队列,然后一个任务处理生成一个pdf文件?

我这里选用一次性丢给queue,但是php处理起来。。。太吃力了,不知各位有何解药没?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

揽月 2022-09-13 21:29:16

我觉得你其实可以就在一个队列里面处理。你说的太吃力,指的是哪方面的?是速度慢,还是会失败?
我用队列处理过10万多行的数据,但不是生成文件,而是更新插入到数据库,耗时大约在1-2小时

牛↙奶布丁 2022-09-13 21:29:16

按照楼上所说,如果只是更新插入数据库那么确实可以放在一个队列里。但是楼主是要生成pdf,我前段时间也是遇到这个问题,我当时的需求是需要将根据商品的id生成条形码然后做成pdf的文件。如果是一次性放在队列里来生成pdf文件的话,那么写入的速度会越来越慢,但是如果向楼主所说循环导入的话,我用dompdf的库并没有像写入txt那样追加的方法,这样每次循环都会将上次循环的文件覆盖掉。

给我一枪 2022-09-13 21:29:16

我觉得问题不是在队列和php 上,无论是那种都是很快处理逻辑的,慢是慢在生成 pdf 文件所做成的IO 损失上

梦中楼上月下 2022-09-13 21:29:16

看你自己业务需要。你这种就好比,一个人处理50个任务(A)和同时50个人一起处理50个任务(B),两者各有优势。A的优势是50个任务之间的消息共享,劣势就是处理慢问题;B的优势就是处理快,但各个任务直接的信息不共享(无法其他人完成了)

夜清冷一曲。 2022-09-13 21:29:16

我觉得你既然一次性丢给queue,那就没必要用队列了,直接开多个子进程来处理
如果要用队列,就一行一行入队列,开多个进程来处理队列

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文