我有一个注册列表,我需要向列表中的每个人发送PDF。每封电子邮件都需要包含一个PDF,它在服务器上有一个基本版本,但每个人都需要通过名称/公司等在顶部进行个性化。这需要通过电子邮件发送给每个人,目前这一数字总计为2,500,但未来可能会更高。
我刚刚开始研究这个项目,但是自上周以来我遇到的问题是服务器似乎无法处理这个问题。目前该脚本正在使用Zend,然后Zend允许它使用Zend_Pdf和Zend_Mail来创建PDF和发送电子邮件。 Zend_mail从smtp.com连接到smtp服务器以进行实际的电子邮件发送。
由于我们在服务器上运行了很多站点,因此我们无法负担得起它,当我分批运行时,它可能会开始下降。到目前为止,我所拥有的最佳解决方案是从我的本地机器运行curl到脚本,然后执行一个人。然后curl脚本再次调用它,一遍又一遍地批量调用。即使这有时也会遇到问题,而且似乎有些人甚至在应该完成之后仍然记忆(我真的不确定如何)。
所以我正在寻找的是有关这样做的信息,包括库,代码,服务器设置信息,任何可以减轻痛苦,运行速度更快的任何事情。我的想法已经用完了,这是我以前不必做的事情(特别是在批量级别)。
谢谢。
编辑:
我也忘了提到它正在使用zend_barcode :: factory在PDF上创建条形码。
答案 0 :(得分:1)
我建议的第一步是找出问题所在,如果可以的话。它是PDF生成?是电子邮件吗? "服务器似乎无法处理这个"并没有说出什么实际上失败了,因为"服务器发生故障" - 您需要确定是否内存/磁盘空间/时间不足或其他内容。这将帮助您确定是否需要对您的一代进行调整或采用新方法。因为你说即使是单个手动调用也会失败,你应该能够将问题缩小到究竟是什么原因导致失败。
如果您在某个资源限制附近运行(可能是多个站点正在运行的情况),您可能需要将此功能卸载到另一台计算机上。您的选择包括:
从问题的具体细节开始。我希望有所帮助。请注意我为创建Docmosis的公司工作。
答案 1 :(得分:0)
根据我的经验 - 有两个选择:
使用一个或多个PDF库动态生成PDF(可能非常慢)。
或
使用像wkhtmltopdf这样的简单shell实用程序,使用webkit渲染引擎将qtml转换为pdf,并使用qt。
基本上,您可以遍历 n HTML页面并生成PDF,而无需纯动态PDF生成的开销!
我们已经使用它来每天分发数千个个性化PDF,因为它可以快速将HTML页面转换为PDF。存在依赖关系,但它比单独“创建”PDF更有效(计算)。
希望这有帮助。
答案 2 :(得分:0)
以下是一些想法:
如果以编程方式创建PDF会让您头疼,您可以使用服务 在过去,我使用了PDFCrowd并取得了良好的效果,他们提供了这些结果 一个有用的PHP库。您可以使用任何样式表的完整URL为他们提供一小段HTML 和图像,他们将为您创建PDF。
每份文件的费用从每份文件0.5-4.5美分不等,具体取决于您的费率计划。
还有其他服务可以做同样的事情。
答案 3 :(得分:0)
如果您尝试通过HTTP调用脚本,脚本将根据php.ini中指定的max_execution_time超时。
您需要编写一个可以从命令行运行的php脚本,然后通过cron作业安排它。该脚本一次可以读取一个用户,将他的pdf文件放在一起,并通过电子邮件发送给他。之后,您可能必须运行一些性能检查以查看服务器是否可以处理该过程。