Jump to content

Email large user list and avoid timeout [SOLVED]


tobydeh

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.
Link to comment
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...
Link to comment
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)
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

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.