2012-02-18 35 views
9

phpmailerで非同期メールを送信することはできますか?次のようにphpmailerで非同期メールを送信する

通常のメール送信のコードスニペットは、次のとおり

$mail->Send();

PHPが移動する前に結果を返すに送信()を待ちます。実際のメール送信ルーチンが完了するのを待つことなく、結果を即時に返すことが可能ですか?

答えて

8

アップデート2016年5月

PHPは、マルチスレッドをサポートし、ユーザ@Sinak Salekで述べたように。 拡張子はpthreadsです。

オリジナル

PHPは(あなたが美しく、これを行う必要がある)をネイティブマルチスレッドをサポートしていません。メールをデータベースに保存し、後で別のスクリプトを使用して後で処理することもできます(たとえば、cronジョブを使用して)。このようにして、基盤となる電子メールフレームワークを待つ必要はありません。

もう一つは、phpmailerが遅い場合は、下にあるメールプログラム(sendmail、postfixなど)が間違って設定されている可能性があります。

+1

ありがとうございます。私たちのケースでは、電子メールを送信することだけが義務付けられているPHPスクリプトに、次の非同期カール要求を実装しました。 http://stackoverflow.com/questions/962915/how-do-i-make-an-asynchronous-get-request-in-php – Haluk

+0

ようこそ。あなたのソリューションにリンクしてくれてありがとうございます。それを解決するためのきれいな方法です:) – CodeTower

+1

PHPはマルチスレッドとよく知られている拡張機能によるマルチプロセッシングをサポートしています。それがデータベースに接続している場合は、適切な拡張と他の多くのことが必要になることは、あなたがネイティブに意図したことだと思います。 pthreadsの拡張子は実際にはよく知られていて、使用するのには非常に単純です。 –

0

あなたがLinux上にいる場合は、execコマンドでPHPスクリプトを実行し、バックグラウンドで起動することができます(コマンドの最後に&を入れます)。サイレントモード(2> &>/dev/null )

関連する問題