2017-11-16 9 views
1

私はPhpMailerを使ってメールを送っています。それは正常に動作しています。返信を待たずにPhpMailerにメールを送ってください

しかし、場合によっては、送信関数が返るのを待たずに、特に時間がかかることがあるためです。私はちょうどfuncitionをすぐに送って終了したいと思う。

これは可能ですか?

これは私が使用しているサンプルコードです(基本的な違いはありません)。

try { 
    $mail = new PHPMailer(true); 
    $mail->isSMTP(); 
    $mail->SMTPDebug = 0; 
    $mail->SMTPAuth = true; 
    $mail->SMTPSecure = 'tls'; 
    // ...other options... 
    $mail->send(); 

    return true; 
} catch (Exception $e) { 
    return $e; 
} 
+1

あなたはそれを待つ必要があります、あなたはajax – delboy1978uk

+1

でスクリプトを呼び出さない限り、キューを実装し、そこにジョブを送り、作業者が保留中のジョブを持ってくることを避ける唯一の方法だと思います。 – jeroen

答えて

1

これを行うには、ajaxを使用するか、独自のキューシステムを構成する必要はありません。暗黙的に、構成する必要のないキューイングシステムが組み込まれているローカルメールサーバーを使用して、数分の1秒でメッセージを送信できます。いくつかのパフォーマンスアドバイスon the PHPMailer wikiがあります。

+0

どうすればいいか説明してもらえますか?私が作業しているアプリケーションは、共有ホスティングサービスでホストされており、単一の電子メールにのみ使用されています。例:購入時にメールを歓迎し、パスワードを回復するなど。 – celsomtrindade

+0

ISPに確認する必要があります。おそらくダイレクトアウトバウンドSMTPをブロックするでしょうが、ローカルのメールサーバ経由で送信する必要があります。あなたが 'isSMTP()'と 'Host = 'localhost'または' isMail() 'を使って送ることができるかどうか見てください。共有ホスティングは最悪のシナリオですが、非常に制限的なので、特に高速化することや、適切なキューイングシステムをインストールすることはできません。 – Synchro

0

jeroenと同様に、これを実現するにはキューを使用する必要があります。 PHPで動作するようにcronを設定したことがあるのであれば、これは同じタスクをスケジュール通りに繰り返すのではなく、キューに1つずつ提供するタスクを実行するという点を除いて同様の原則を持っています。これらのタスクに優先順位を付けることさえできます。私はあなたがBeanstalkdで始めることをお勧めします。

関連する問題