簡體   English   中英

Symfony(PHP)–在沒有隊列的情況下在后台發送郵件

[英]Symfony (PHP) – Send mail in background without queue

我有一個發送電子郵件的Symfony應用程序。 要發送的電子郵件數量很少,我想不使用隊列就發送它們。 但是,Swiftmailer大約需要20秒才能執行此操作。 這可能是SMTP服務器的限制。 我配置Web服務器的功能有限。

我希望PHP腳本將整個響應發送給用戶,然后在后台用電子郵件完成任務。

我嘗試了什么?

Swiftmailer內存假脫機無濟於事。 函數fastcgi_finish_request不起作用,用戶必須等待整個腳本完成。

我也不能派生腳本。 前叉功能已禁用。

你可以使用假脫機文件,描述在這里

如果您不想使用隊列,則可以異步啟動電子郵件發送。 您可以創建一個服務來發送您的電子郵件,然后使用krlove / async-service-call-bundle之類的方法異步調用它。

如果您不想使用該捆綁包並自己做,則可以創建一個將假脫機電子郵件並使用類似以下內容的命令:

$proc_command = 'php bin/console yourcommand > /dev/null 2>&1 &';
$proc = popen($proc_command, 'r');
pclose($proc);

我配置Web服務器的功能有限。

我看到了這個消息,恐怕您無法安裝任何東西,但是讓我分享我的想法。

如果可以將其安裝到服務器,則第一個選項是POSTFIX

  • 它異步發送消息,即在真正發送電子郵件時無需等待。 所有隊列都在postfix內部實現
  • 可以將其配置為通過外部SMTP服務器發送電子郵件
  • 它具有sendmail兼容性界面 ,因此您可以將系統本機sendmail替換為postfix,並將Swiftmailer配置為使用sendmail進行傳輸

第二種選擇是使用一些雲電子郵件服務(通過SMTP或REST API),並希望它能夠足夠快地運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM