1

新しいユーザーが参加したときに、サイト内のすべてのユーザーにメールを送信する必要があります。私の問題は、約 400 通のメールを送信した後にスクリプトの実行が停止することです。set_time_limit を 0 に設定しました。また、10 通のメールを送信した後、sleep(2) を与えています。

この問題の背後にある理由は何ですか。この問題の解決策。一括メールを送信するためのより良い方法はありますか?

前もって感謝します

薔薇

4

6 に答える 6

2

これを行う方法は、cron の助けを借りています。

私たち (当社) は、ユーザーリストを 50 個のアドレスのブロックに分割しました。これらのブロックは、データベース内のテーブルに配置されます (このブロックを電子メール データ (ヘッダー、本文など) にリンクするデータと共に)。

約 5 分ごとにトリガーされる cron.php ファイルを通じて、システムは送信する必要があるデータベース内の最初の使用可能なブロックを取得し、電子メールを送信します。

于 2010-05-30T09:18:14.720 に答える
0

PHPがセーフモードで実行されている場合set_time_limit、効果はありません。PHPをセーフモードで実行する必要がある場合は、構成ディレクティブを使用してデフォルトの制限時間を変更できますmax_execution_time

于 2010-05-30T09:26:21.083 に答える
0

スクリプトが停止する理由がわかりません。しかし、あなたはまた、大量の電子メールを送信するためのより良い方法を求めました。電子メールパッケージを使用すると、組み込みのPHPメールコマンドよりもはるかに詳細に制御できることがわかりました。SwiftMailerはとても良いものです。

于 2010-05-30T09:43:27.283 に答える
0

タスクキューを設定してみてください。Webアプリケーションが電子メールを送信する場合、それをタスクのデータベースに追加し、個別のデーモンがそれぞれを処理します。つまり、Webサイトのすべてのメンバーに電子メールを送信するように設定でき、デーモンは2〜4秒ごとに各メンバーを送信します。インスピレーションについては、Kohanaタスクキューモジュール(PHP)、Delayed_job(Ruby)、およびCelery(Python)を参照してください。

于 2010-05-30T10:35:13.590 に答える
0

これは私の前の答えとは関係がないので、私は新しい答えを投稿しています。

私は疑問に思っていました:あなたは正確にどこに設定set_time_limit0ますか?つまり、php.ini、.htaccess、またはini_set()を使用したphpファイルからのものですか。

この値が上書きされる可能性はありますか?

于 2010-05-30T14:24:05.097 に答える
0

私は同様の問題を抱えていましたが、それはメモリ使用量にかかっていました.どのように送信していますか?コードを提供できますか?

于 2010-05-30T09:15:54.633 に答える