鍍金池/ 問答/人工智能  PHP  網(wǎng)絡安全/ 一次性生成多個任務 or 在一個任務中多次處理?

一次性生成多個任務 or 在一個任務中多次處理?

需求:上傳Excel表,將Excel表格中的按行將數(shù)據(jù)導入到指定模板中,生成文件(word or pdf) 并提供打包下載;

暫時不討論需求有多惡心(明明使用word郵件合并即可解決的問題。。。),我們還是得想辦法解決啊。

將一條數(shù)據(jù)放在指定的模板生成pdf文件,打包下載,這些基本的都沒什么問題。這里想請教的一個問題是:

我這里定義了一個隊列處理生成pdf,是一次性將excel數(shù)據(jù)全部丟給隊列,然后在handle中循環(huán)生成pdf?還是在response前端前將數(shù)據(jù)拆分成多個任務,循環(huán)加入隊列,然后一個任務處理生成一個pdf文件?

我這里選用一次性丟給queue,但是php處理起來。。。太吃力了,不知各位有何解藥沒?

回答
編輯回答
膽怯

我覺得你其實可以就在一個隊列里面處理。你說的太吃力,指的是哪方面的?是速度慢,還是會失敗?
我用隊列處理過10萬多行的數(shù)據(jù),但不是生成文件,而是更新插入到數(shù)據(jù)庫,耗時大約在1-2小時

2018年4月9日 22:12
編輯回答
膽怯

我覺得你既然一次性丟給queue,那就沒必要用隊列了,直接開多個子進程來處理
如果要用隊列,就一行一行入隊列,開多個進程來處理隊列

2018年1月7日 16:21
編輯回答
她愚我

我覺得問題不是在隊列和php 上,無論是那種都是很快處理邏輯的,慢是慢在生成 pdf 文件所做成的IO 損失上

2017年4月7日 20:30
編輯回答
陪她鬧

按照樓上所說,如果只是更新插入數(shù)據(jù)庫那么確實可以放在一個隊列里。但是樓主是要生成pdf,我前段時間也是遇到這個問題,我當時的需求是需要將根據(jù)商品的id生成條形碼然后做成pdf的文件。如果是一次性放在隊列里來生成pdf文件的話,那么寫入的速度會越來越慢,但是如果向樓主所說循環(huán)導入的話,我用dompdf的庫并沒有像寫入txt那樣追加的方法,這樣每次循環(huán)都會將上次循環(huán)的文件覆蓋掉。

2017年5月6日 22:35
編輯回答
獨白

看你自己業(yè)務需要。你這種就好比,一個人處理50個任務(A)和同時50個人一起處理50個任務(B),兩者各有優(yōu)勢。A的優(yōu)勢是50個任務之間的消息共享,劣勢就是處理慢問題;B的優(yōu)勢就是處理快,但各個任務直接的信息不共享(無法其他人完成了)

2017年6月26日 14:00