Email large user list and avoid timeout [SOLVED]
Posted 27 October 2006 - 11:30 PM
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...
<<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.
Posted 27 October 2006 - 11:43 PM
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. ;-)
Posted 27 October 2006 - 11:49 PM
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...
Posted 28 October 2006 - 01:30 AM
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)
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users