2016-04-04 46 views
-1

私はsmtp経由で電子メールを送るためにスウィフトメーラーを使ってスクリプトを書いた。私は、smtp送信のためにスクリプトが読み込まれるまでにかなりの時間がかかることに気付きました。PHPはSMTP経由で電子メールを送信する非常に遅い

私はそれを別のファイルに送信することをお勧めします。私が今に持っている唯一の問題は、ファイルを開く必要があることです。

fopenなどを使用したくないのは、私がそのファイルを "バックグラウンドで"実行するためです。

クロノスなしで可能ですか?ユーザーが気付かないうちにそのファイルを起動する方法はありますか?

ありがとうございます。

+0

[接続を終了して処理を続行する]の可能な複製(http://stackoverflow.com/questions/4806637/continue-processing-after-closing-connection) – omnichad

答えて

2

コマンドラインPHP

exec('php script.php >/dev/null 2>&1 &'); 
+0

ありがとうございます。それは完全に機能します。 – Dennis

0

別のオプションを呼び出すことにより、これを行うためにexecを使用することができますが(あなたが低いトラフィックを持っている場合)ランニングについて

悪いことをcronスクリプトおよびキュー表を持っていることですPHPのバックグラウンドジョブはサービス拒否リスクです。 Cronは2分ごとに実行し、実行中の別のインスタンスを停止してメールキューを処理します。 新しいプロセスを作成してバックグラウンドジョブを実行するのは危険です。そして、あなたは覚えておく必要があります - ユーザー定義変数をバックグラウンドプロセスに渡すことは決してありません。

+0

彼は彼がcronを望まないと言った。 DoSとの関係は不明です。もちろん、ユーザ定義の変数をバックグラウンドスクリプトに解析して、最初にそれらをサニタイズするだけでもできます。 –

+0

はい、あなたは「彼はcronが欲しくない」ということについて正しいです。しかし、1000人の幹部を出さないようにユーザーに頼るよりも、cronによって制御された仕事をする方が良いと思う。また、サニタイズの問題は、チーム(または助けようとする仲間)がいて、誰かが消毒することを忘れた場合です。 – strangeqargo

+0

笑、私はあなたがデータベースに情報を提供したことはないと思います。 –

関連する問題