我想要实现的目标:用户上传数据文件。它被添加到队列中,当轮到它时,它会创建许多并行任务,包括转换该文件中的行。无论何时用户想要,他都可以获得转换了多少行的状态(以%为单位)。
我决定和gearman一起去,因为将来将工作人员转移到其他服务器和东西是件好事。据我了解,在使用worker时应避免使用不必要的数据库连接,因此将状态存储在数据库中并不是一个可行的选择。
我尝试过这样的事情:控制器创建新的后台任务(文件处理),此任务调用较小的任务(转换,我使用后台实现并行),然后将最终结果上传到数据库。 Gearman事件监听器仅适用于非后台任务(至少在我试图附加它时)。
我应该获取所有任务并检查作业参数以将其链接到特定ID,还是可以以某种方式将其他参数传递给作业?
GearmanClient :: jobStatus需要工作句柄,我无法访问,因为它在一个请求中创建了后台进程,但在其他请求中需要。
对不起文字墙,谢谢你的帮助!