2009-06-04 16 views
4

古典的なaspアプリケーションでバックグラウンドジョブを使用して電子メールを送信する必要があるため、遅いWebサーバーが電子メールの送信を完了するまで待つ必要はありません。古典的なaspでマルチスレッド/バックグラウンドプロセスを実行する方法

私は2つの別々のリクエストを生成するためにAjaxを使用できますが、Javascriptを必要としないと思います。さらに、私はこれを取り除く良い方法があると思う。アイデア?

+4

より良い方法:従来のASPは使用しないでください。申し訳ありませんが、私は抵抗できませんでした。 :) – Zifre

+0

嫌われてはいけません。 – RedFilter

+1

彼は大嫌いではありません - 彼は現実主義者です。 –

答えて

11

あなたはあまりにも狭く考えています。 ASPから電子メールを送信する必要はありません。それをデータベースに入れて、毎分実行する別々のプログラムを用意し、データベースにあるすべての電子メールを送信します。

+2

+1に強制的にアップグレードするのと同じくらい簡単な場合。最も簡単な解決策は、スケジュールされたタスクとして実行されているVBScriptです。 – AnthonyWJones

+0

偉大な答え、私はこれを考えていたが、スケジュールされたジョブを使用して1分遅れて、毎分dbに接続/読み取り/書き込みのオーバーヘッドを避けるためにしたいと思います。したがって、VBscriptから別のプログラムをバックグラウンドで実行する方法はありませんか? –

1

申し訳ありませんが、古いASPを使用して別のスレッドを生成する方法はありませんでした。

隠されたIFRAMEについてAJAXが必要ではない場合は、醜いですが、それは動作します...

2

IISに組み込まれているものよりもはるかにメールを処理することができる3rd party COM objectsがあります。あなたのメッセージを伝えるだけでキューが処理されるので、プログラムはすぐに制御を取り戻すことができます。

0

これを高速化するには、CDOSYSにWebサーバーのIISピックアップディレクトリ(通常はc:\ inetpub \ mailroot \ pickup)を使用するように指示するのがよいでしょう。 WebサーバーにSMTP仮想サーバーがインストールされていると仮定します。

別の類似した、より高速なオプションは、手動で* .EMLファイルを生成してピックアップディレクトリに入れることです。また、競合の可能性を避けるために、ファイルを一時ディレクトリに置いてからバッチファイルを特定の間隔でピックアップディレクトリに移動させることもできます。

3

私はtomjenと同意します。電子メールをデータベーステーブルに保存し、バックエンドプロセスを使用して実際に電子メールを送信すると、特に大量の電子メールを送信している場合には、本当にうまく機能します。私はバックエンドのメーラーにPerlを勧めています。これは簡単に仕事を終えるパッケージがいくつかあるからです。

1

他の提案を使用したくない場合は、電子メールを送信してからCOMまたはローカル(ローカル)tcpソケット経由でこのプログラムと通信する別のプログラムを実行することを検討してください。これは、インターネット経由でサーバーに接続するよりもはるかに高速で、データベースの使用が遅れるのを避けることができます。

2

Persitsは、必要な処理を行うメールキューイングシステムに付属するよく知られているAspEmail COMコンポーネントを生成します。

http://www.aspemail.com/manual_07.html

あなたのコードは、基本的にサーバー上で実行することにより、仕上げから、あなたのASPスクリプトを保持していない、独立したプロセスでキューにあるものは何でもメール送信キューデーモンにメッセージの送信を手渡しますその実行。

+0

おかげさまでフランク - これを掲載した後、私たちは実際に永続化のためのライセンスを持っていることに気付きました。 –

+0

喜んで助けてください。 :) –

関連する問題