Jump to content

Archived

This topic is now archived and is closed to further replies.

tobydeh

Email large user list and avoid timeout [SOLVED]

Recommended Posts

HI Guys,

I am building a newsletter system for our site at work and i cant seem to send all the emails without the page/code falling over.

We have 850,000 registered users so its not an easy task.

this is my current situation:

Render Email Template (Only do this once)
Connect to SMTP
Say Hello, Prepare server for data

(
    Select Current Chunk of 500 users from the DB
    (
        Loop through chunks of 500 emails from the db
        Replace User-Specific Tags inside email body.
        update row email_sent = true
    )
)

Close SMTP Connection

At the moment i can only reach around 50,000 emails before the page stops dead.

I am utilizing various sleep() calls to try an prevent a timeout, and i have set the PHP max_timeout / memory settings etc.

The site uses Mod_rewrite (built using CakePHP) so i cannot call the script from shell using /usr/bin/php/... as it will not start cakes Dispatch system etc, and will not initialize my DB Models.

Would it help to call the script from exec()? Calling exec('curl -s /path/to/my/file/')?

Does the Apache "Timeout" Setting have any bearing on what i am doing??

I checked out SendStudio's source code, and it seems to do the following...

set_time_limit(0)
<<Start firing emails>>

they do not appear to be doing anything spectacular to avoid timeouts. I Have used send stduio before to email around 340,000 users without any problems so i am most confused.


Any help / knowledge in this area would be great as i am absolutely up **** creek without a paddle!

F.Y.I The site is on a Dedicated Linux Box at RackSpace, using PHP 4.

Kinds Regards in advance,

Toby de Havilland.

Share this post


Link to post
Share on other sites
Spam? :-/

If it is, and these people do not want your emails, you are a lowlife scumbag and I hope you get throat cancer. If not, then disregard. ;-)

Share this post


Link to post
Share on other sites
haha, No of course it isnt spam...


If it was spam i would get a crappy dektop app and import my CSV of dodgy emails.

It is a Newletter App to intergrate into our website at work. It is a large onle gaming website with many users. All of whom have accepted the Newsletter.

So.. no more rudeness please...

Share this post


Link to post
Share on other sites
>>>>>>>>>>>>>>>>SOLVED<<<<<<<<<<

By creating a clever hack using flush(), ob_flush(), ob_end_flush(),ob_get_level() and ob_start() i was able to push content to tr browser to stop it thinking the page was dead, i also managed some clever calls to free up some memory and then..... Smiles all round :0)

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.