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