Go Back   vb.org Archive > vBulletin Modifications > Archive > Modification Graveyard
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Cron Based E-Mail Sending Details »»
Cron Based E-Mail Sending
Version: 3.7.003, by Paul M Paul M is offline
Developer Last Online: Nov 2023 Show Printable Version Email this Page

Category: Administrative and Maintenance Tools - Version: 3.7.x Rating:
Released: 01-07-2008 Last Update: 06-16-2008 Installs: 160
Translations  
No support by the author.

This modification is no longer available or supported.

In default vBulletin if you send a large number of e-mails, vbulletin either puts them in it's queue and then attempts to send them as each user visits a page, or just simply tries to send them straight away (This is the case when you use the Administrators email users inteface).

As a result of this your server can become seriously overloaded very quickly - so sending several thousand e-mails (like a newsletter) can become very difficult (hours spent clicking 'next' in the ACP) - as a result of these problems, this very simple modification was born.

This modification does two things ;

1. E-mails from the ACP inteface are sent to the mail queue, not straight to the mail system.

2. The processing of the mail queue is set-up as a vb cron item.

Obviously for this to work, you must turn on e-mail queuing in the ACP options - set 'Use Mailqueue System' to 'Yes', and 'Number of Emails to Send Per Batch' to a realistic value (based on the cron setting, as below).

There are two realisitc options for the cron job, you can either set it to run every minute, and set the items to be processed to something small (like 10), or you can do what this modification does by default and set it to run every 10 minutes, and set the items to be processed to something larger (like 100).

Remember, 10 per minute = 600 per hour, 100 per 10 minutes is also 600 per hour. The numbers really depend on how quick you want large queues processed, and how much your mail server can handle in one go.

Once working, when using the ACP mail users inteface, remember you can set it to process 9999 at once (not 500 or whatever) as the mails will now go into the queue, not be sent directly.

Note: This modification will affect any queued e-mails such as subscription e-mails. It will not affect registration e-mails as they bypass queuing anyway.

This modification includes the code by Antivirus that displays the current size of the mail queue (v3.7.002 onwards).

Version 3.7.003 has the option to add a small delay before each e-mail is sent (between 1 and 9 seconds). Use this option carefully.



History:

v3.7.001 : First Release for vB 3.7
v3.7.002 : Added mail queue size display code.
v3.7.003 : Added option for a delay between the sending of each e-mail.

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #12  
Old 02-03-2008, 06:18 PM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Read the first post.
Reply With Quote
  #13  
Old 02-03-2008, 09:03 PM
hdrmut hdrmut is offline
 
Join Date: Aug 2005
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you
Reply With Quote
  #14  
Old 02-04-2008, 12:02 AM
asj's Avatar
asj asj is offline
 
Join Date: Jul 2006
Posts: 117
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you very much
Reply With Quote
  #15  
Old 02-10-2008, 08:30 PM
kylek kylek is offline
 
Join Date: Oct 2003
Location: British Columbia, Canada
Posts: 798
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

"Queue Size
Antivirus has posted a nifty little addon that displays the current size of the mail queue here."

This doesn't seem to work with 3.7.0 Beta 4. When you import the product you get this:

The following dependencies were not met:
  1. The product paulm_20060709 must be installed before this product may be installed. (Compatible starting with 1)
Reply With Quote
  #16  
Old 02-10-2008, 09:04 PM
Howell Howell is offline
 
Join Date: Apr 2007
Location: UK
Posts: 110
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kylek View Post
"Queue Size
Antivirus has posted a nifty little addon that displays the current size of the mail queue here."

This doesn't seem to work with 3.7.0 Beta 4. When you import the product you get this:

The following dependencies were not met:
  1. The product paulm_20060709 must be installed before this product may be installed. (Compatible starting with 1)
Open: product-anti_mailqueue_stats_acp

Find:
PHP Code:
    <dependencies>
        <
dependency dependencytype="product" parentproductid="paulm_20060709" minversion="1" maxversion="" />
    </
dependencies
Replace with:
PHP Code:
    <dependencies>
        <
dependency dependencytype="product" parentproductid="paulm_cmq_37" minversion="1" maxversion="" />
    </
dependencies
Thats what I did to get it working.
Reply With Quote
  #17  
Old 02-11-2008, 11:22 AM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes, well spotted.

I suppose what I should really do is ask Antivirus if I can include his code in the main product.
Reply With Quote
  #18  
Old 04-19-2008, 12:09 AM
webgeek247 webgeek247 is offline
 
Join Date: Mar 2006
Location: United Kingdom
Posts: 124
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Paul, looks like it will do the job once i figure out how to use it properly

Ive setup the script but i got this error

Quote:
Database error in vBulletin 3.7.0 Release Candidate 3:

Invalid SQL:

UPDATE datastore SET
data = data - 250,
data = IF(data < 0, 0, data)
WHERE title = 'mailqueue';

MySQL Error : MySQL server has gone away
Error Number : 2006
Date : Friday, April 18th 2008 @ 07:02:17 PM
Script : http://www.djpassion.co.uk/forums/ad...cron&cronid=21
Referrer : http://www.djpassion.co.uk/forums/admincp/index.php
IP Address : **********
Username : Chris Powell
Classname : vB_Database
MySQL Version :
It seemed to work out with the email send out setting set to 10 but when i tried 250 i got the above error

My host allow 500 emails to be sent out per hour. I have just under 1000 members so to be on the safe side would have thought setting it to send 250 emails per hour would work ok...please help
Reply With Quote
  #19  
Old 04-19-2008, 12:11 AM
webgeek247 webgeek247 is offline
 
Join Date: Mar 2006
Location: United Kingdom
Posts: 124
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ps even though it said it failed i think the emails still sent out because the Mailqueue Quick Stats went from around 950 to this

Quote:
There are currently 679 unsent emails remaining in the mail queue.
Reply With Quote
  #20  
Old 04-19-2008, 07:44 AM
webgeek247 webgeek247 is offline
 
Join Date: Mar 2006
Location: United Kingdom
Posts: 124
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

just checked back this morning and have now got
Quote:
There are currently 434 unsent emails remaining in the mail queue.
more info. the error message i got above was what i got after running the Run Now button in scheduled tasks. hope this extra info helps.
Reply With Quote
  #21  
Old 04-19-2008, 11:08 AM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You obviously have a fairly low mysql timeout, so if you try and send too many emails in one go, your database connection is timing out before they have all been sent.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 02:16 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04627 seconds
  • Memory Usage 2,316KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (2)bbcode_php
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete