我有一个发送电子邮件的Symfony应用程序。要发送的电子邮件数量很少,我想在不使用队列的情况下发送它们。但是,Swiftmailer大约需要20秒才能执行此操作。它可能是SMTP服务器的限制。我配置Web服务器的能力有限。
我希望PHP脚本向用户发送完整的响应,然后在后台完成eMail的任务。
Swiftmailer内存假脱机没有帮助。函数fastcgi_finish_request
不起作用,用户必须等待整个脚本完成。
我也不能分叉脚本。 fork函数被禁用。
答案 0 :(得分:0)
您可以使用文件假脱机,如here所述:
如果您不想使用队列,则可以异步启动发送电子邮件。您可以创建一个服务来发送您的电子邮件,然后使用krlove/async-service-call-bundle之类的内容异步调用它。
如果您不想使用该捆绑包并自行完成,您可以创建一个命令来阻止您的电子邮件,并使用以下内容进行调用:
$proc_command = 'php bin/console yourcommand > /dev/null 2>&1 &';
$proc = popen($proc_command, 'r');
pclose($proc);
答案 1 :(得分:0)
我配置Web服务器的能力有限。
我看到了这个,我担心你无法安装任何东西,但让我分享一下我的想法。
如果您能够将其安装到服务器
,则第一个选项是POSTFIX第二种选择是使用一些云电子邮件服务(通过SMTP或REST API)并希望它能够足够快地运行