Re: Re: Mass Mailing Using PHP
| From: | Paul Bissex | Date: | Tue, 28 Sep 2004 14:41:56 +0000 |
| Subject: | Re: Re: Mass Mailing Using PHP | ||
| References: | 1 2 3 4 5 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-198067@lists.php.net to get a copy of this message | ||
On Tue, 28 Sep 2004 14:54:24 +0800, Roger Thomas <sniper@home.net.my> wrote:
> Quoting Manuel Lemos <mlemos@acm.org>:
> > For this reason, during deliveries of messages to many recipients, it is better to pause
> > once in a while to let the queue be fully processed and do not stall other programs.
>
> Do you mean, say we fetched 100,000 addresses from database, we make our script sleep for a
> while after sending, say 1000 mails ?
An alternative solution is to insert a small delay using usleep()
after each message is sent such that the queue never gets overfull to
begin with. Also, keep in mind you are dealing with multiple possible
constraints -- local resource limitations (CPU & disk), and bandwidth
available for connecting to remote hosts.
For reference, I do this kind of thing on a fairly busy server, using
Postfix, for nonprofit clients that do member newsletter mailings in
the 5,000 to 10,000 piece range. I find that I am able to keep system
load tolerably low by limiting my script to about 3-4 messages per
second. In my case I am mostly concerned about managing local CPU. The
queue never backs up.
You will also want to look at protecting your script from dying
prematurely by using ignore_user_abort() and set_time_limit() or
equivalents.
If you are sending only a few hundred messages, that shouldn't place
much of a burden on your server, and you may not need to insert any
delay at all.
(Whereas if you are sending 100,000 messages, I'd have to guess you're
a spammer, as any org with a legitimate reason to mail 100K people at
once would be unlikely to be creating this script from scratch and
asking basic questions in php-general. But I could be wrong.)
good luck,
pb
--
paul bissex, e-scribe.com -- database-driven web development
413.585.8095
69.55.225.29
01061-0847
72°39'71"W 42°19'42"N