我正在从事一个使用php (无框架)管理员工薪资的项目。此应用程序由客户端(有自己的数据库)组成。每个数据库都由客户的员工和他们的工资组成。有关特点如下:
我创建pdfs和发送电子邮件的最初解决方案是迭代从每个客户端数据库中检索到的员工列表,并在单击按钮时执行一些操作。但是,当我选择40名员工使用fpdf为他们创建pdf文件时,应用程序花了4秒的时间进行芬兰语。这是不可接受的,因为每个客户端最多可能包含5000名员工。使用phpmailer发送电子邮件也是如此,发送三封电子邮件需要25秒。
因此,我开始寻找一个多线程解决方案,可以同时执行每个操作。然而,线程v3只在CLI中工作,我们使用的是php 7。我不知道如何使用多个进程,但我读到它可能是完全的。
是否有一个可行的、快速的解决方案来实现我在php中想要的?我应该用不同的语言吗?
发布于 2017-05-19 17:15:26
它是否需要实时发生,或者您是否可以使用“批处理”解决方案?
批处理解决方案将涉及一些额外的步骤。您需要跟踪您的批处理,可能是在新的batch和batch_job表中。管理员可以创建一个新的批处理来生成PDF,而PDF生成器的每一个执行都是一个批处理。您需要有一些在后台运行的其他进程,并检查批处理表,以查看需要运行什么。界面中还应该有一些内容,这样用户就可以看到已经创建、正在运行、完成或失败的批处理。
基本上,工作流应该是这样的:
此解决方案的优点是批处理过程可以在后台运行。PDF生成可以是并行的,串行的,或者你选择的任何其他方式。
缺点:实现这一点可能需要超过一两个小时的编码;)如果您预期有其他业务流程对非常大的集合操作,则可能值得认真考虑这一点。
如果您的硬件能够在一分钟内实际支持生成5000个PDF,并且您真的希望这是实时的,那么您可以实现上述解决方案的一个更短的版本(嗯,它不是实时的,但比我的其他建议更好):
https://softwareengineering.stackexchange.com/questions/349284
复制相似问题