Very slow message processing after upgrade to 3.0.6

Questions & Problems about Installing or Upgrading with Version 3 phpList.
Forum rules
Please help the volunteers to help you by supplying the version of phpList you are using, browser & version and if possible, a link to your phpList installation.

Very slow message processing after upgrade to 3.0.6

Postby h2ojunkie » 9:57pm, Wed 25 Jun, 2014

I finally got around to upgrading phplist to 3.0.6. I was on 2.10.14

On 2.10.14, a message would send to over 200K emails in about 6 hours (typically I would get 30K+ per hour send rate).

I upgraded to 3.0.6 then send out a message in test mode (define ("TEST",1); The test message is sending at a rate of only 3K to 4K per hour.

I have batch processing disabled, throttling is disabled, so it should be sending as fast as possible.

Can anyone provide any input on why processing is going so slow for me?

Here's the config I'm using (minus server details of course).

Code: Select all



General settings for language and database



# select the language module to use
# Look for <country>.inc files in the texts directory
# to find your language
# this is the language for the frontend pages. In the admin pages you can
# choose your language by using the dropdown in the pages.
$language_module = "";

# what is your Mysql database server
$database_host = "";

# what is the name of the database we are using
$database_name = "";

# who do we log in as?
$database_user = "";

# and what password do we use
$database_password = '';

# enable database connection compression
$database_connection_compression = false;

# force database connection to use SSL
$database_connection_ssl = false;

# if you use multiple installations of phpList you can set this to
# something to identify this one. it will be prepended to email report
# subjects
$installation_name = 'phpList';

# if you want a prefix to all your tables, specify it here,
$table_prefix = "phplist_";

# if you want to use a different prefix to user tables, specify it here.
# read README.usertables for more information
$usertable_prefix = "phplist_user_";

# if you change the path to the phpList system, make the change here as well
# path should be relative to the root directory of your webserver (document root)
$pageroot = '';



Settings for handling bounces



# Message envelope. This is the email that system messages come from
# it is useful to make this one where you can process the bounces on
# you will probably get a X-Authentication-Warning in your message
# when using this with sendmail
# NOTE: this is *very* different from the From: line in a message
# to use this feature, uncomment the following line, and change the email address
# to some existing account on your system
# requires PHP version > "4.0.5" and "4.3.1+" without safe_mode
$message_envelope = '';

# Handling bounces. Check README.bounces for more info
# This can be 'pop' or 'mbox'
$bounce_protocol = 'pop';

# set this to 0, if you set up a cron to download bounces regularly by using the
# commandline option. If this is 0, users cannot run the page from the web
# frontend. Read README.commandline to find out how to set it up on the
# commandline

# when the protocol is pop, specify these three
$bounce_mailbox_host = '';
$bounce_mailbox_user = '';
$bounce_mailbox_password = '';

# the "port" is the remote port of the connection to retrieve the emails
# the default should be fine but if it doesn't work, you can try the second
# one. To do that, add a # before the first line and take off the one before the
# second line
#$bounce_mailbox_port = "110/pop3/notls";
$bounce_mailbox_port = "995/pop3/ssl";
#$bounce_mailbox_port = "110/pop3";

# it's getting more common to have secure connections, in which case you probably want to use
#$bounce_mailbox_port = "995/pop3/ssl/novalidate-cert";

# when the protocol is mbox specify this one
# it needs to be a local file in mbox format, accessible to your webserver user
$bounce_mailbox = '/var/spool/mail/listbounces';

# set this to 0 if you want to keep your messages in the mailbox. this is potentially
# a problem, because bounces will be counted multiple times, so only do this if you are
# testing things.
$bounce_mailbox_purge = 1;

# set this to 0 if you want to keep unprocessed messages in the mailbox. Unprocessed
# messages are messages that could not be matched with a user in the system
# messages are still downloaded into phpList, so it is safe to delete them from
# the mailbox and view them in phpList
$bounce_mailbox_purge_unprocessed = 1;

# how many bounces in a row need to have occurred for a user to be marked unconfirmed
$bounce_unsubscribe_threshold = 2;



Security related settings



# set this to 1 if you want phpList to deal with login for the administrative
# section of the system
# you will be able to add administrators who control their own lists
# default login is "admin" with password "phplist"
$require_login = 1;

# if you use login, how many lists can be created per administrator

# if you use commandline, you will need to identify the users who are allowed to run
# the script. See README.commandline for more info
$commandline_users = array("phplist");
# or you can use the following to disable the check (take off the # in front of the line)
#$commandline_users = array();

## silent resubscribe
# when someone signs up with an email address already in the database,
# phpList will simply accept it and subscribe them as if it is the first time
# however, that allows anyone to overwrite data of someone else
# see also
# if you don't like that, you can stop this from happening and send the subscriber to the
# preferences page instead. To do so, uncomment (remove the #) the next line

# as of version 2.4.1, you can have your users define a password for themselves as well
# this will cause some public pages to ask for an email and a password when the password is
# set for the user. If you want to activate this functionality, set the following
# to 1. See README.passwords for more information

# if you use passwords, they will be stored encrypted
# set this one to the algorythm to use. You can find out which ones are
# supported by your system with the command
# $ php -r "var_dump(hash_algos());";
# "sha256" is fairly common on the latest systems, but if your system is very old (not a good idea)
# you may want to set it to "sha1" or "md5"
# if you use encrypted passwords, users can only request you as an administrator to
# reset the password. They will not be able to request the password from
# the system
# if you change this, you may have to use the "Forgot password" system to get back in your installation

# if you also want to force people who unsubscribe to provide a password before
# processing their unsubscription, set this to 1. You need to have the above one set
# to 1 for this to have an effect

# if a user should immediately be unsubscribed, when using their personal URL, instead of
# the default way, which will ask them for a reason, set this to 1

# when a user unsubscribes they are sent one final email informing them of
# their unsubscription. In order for that email to actually go out, a gracetime
# needs to be set otherwise it will never go out. The default of 5 minutes should
# be fine, but you can increase it if you experience problems
$blacklist_gracetime = 5;

# to increase security the session of a user is checked for the IP address
# this needs to be the same for every request. This may not work with
# network situations where you connect via multiple proxies, so you can
# switch off the checking by setting this to 0

# Check for host of email entered for subscription
# Do not use it if your server is not 24hr online
# make the 0 a 1, if you want to use it
$check_for_host = 0;



Debugging and informational



# if test is true (not 0) it will not actually send ANY messages,
# but display what it would have sent
define ("TEST",1);

# if you set verbose to 1, it will show the messages that will be sent. Do not do this
# if you have a lot of users, because it is likely to crash your browser
# (it does mine, Mozilla 0.9.2, well 1.6 now, but I would still keep it off :-)
define ("VERBOSE",0);

# some warnings may show up about your PHP settings. If you want to get rid of them
# set this value to 0

# user history system info.
# when logging the history of a user, you can specify which system variables you
# want to log. These are the ones that are found in the $_SERVER and the $_ENV
# variables of PHP. check
# the values are different per system, but these ones are quite common.
$userhistory_systeminfo = array(

# add spamblock
# if you set this to 1, phplist will try to check if the subscribe attempt is a spambot trying to send
# nonsense. If you think this doesn't work, set this to 0
# this is currently only implemented on the subscribe pages

# notify spam
# when phplist detects a possible spam attack, it can send you a notification about it
# you can check for a while to see if the spam check was correct and if so, set this value
# to 0, if you think the check does it's job correctly.
# it will only send you emails if you have "Does the admin get copies of subscribe, update and unsubscribe messages"
# in the configuration set to true





# CHECK REFERRER. Set this to "true" to activate a check on each request to make sure that
# the "referrer" in the request is from ourselves. This is not failsafe, as the referrer may
# not exist, or can be spoofed, but it will help a little
# it is also possible that it doesn't work with Webservers that are not Apache, we haven't tested that.

# if you activate the check above, you can add domain names in this array for those domains
# that you trust and that can be allowed as well
# only mention the domain for each.
# for example: $allowed_referrers = array('','','','');
$allowed_referrers = array();



Feedback to developers



# use Register to "register" to Once you set TEST to 0, the system will then
# request the "Powered By" image from, instead of locally. This will give me
# a little bit of an indication of how much it is used, which will encourage me to continue
# developing phpList. If you do not like this, set Register to 0.
define ("REGISTER",0);

# We request you retain some form of credits on the public elements of
# phpList. These are the subscribe pages and the emails.
# This not only gives respect to the large amount of time given freely
# by the developers but also helps build interest, traffic and use of
# phpList, which is beneficial to future developments.
# By default the webpages and the HTML emails will include an image and
# the text emails will include a powered by line

# If you want to remove the image from the HTML emails, set this constant
# to be 1, the HTML emails will then only add a line of text as signature

# if you want to also remove the image from your public webpages
# set the next one to 1, and the pages will only include a line of text

# in order to get some feedback about performance, phpList can send statistics to a central
# email address. To de-activate this set the following value to 1

# this is the email it will be sent to. You can leave the default, or you can set it to send
# to your self. If you use the default you will give me some feedback about performance
# which is useful for me for future developments
# $stats_collection_address = '';



Queue and Load management



# If you set up your system to send the message automatically (from commandline),
# you can set this value to 0, so "Process Queue" will disappear from the site
# this will also stop users from loading the page on the web frontend, so you will
# have to make sure that you run the queue from the commandline
# check README.commandline how to do this

# after every run of the queue to send out messages, phpList will send a summary to the
# admin address. If you want to stop this, set this to false or 0

# if you want to use \r\n for formatting messages set the 0 to 1
# see also
# this is likely to break things for other mailreaders, so you should
# only use it if all your users have Outlook (not Express)

# batch processing
# if you are on a shared host, it will probably be appreciated if you don't send
# out loads of emails in one go. To do this, you can configure batch processing.
# Please note, the following two values can be overridden by your ISP by using
# a server wide configuration. So if you notice these values to be different
# in reality, that may be the case

# max messages to process
# if there are multiple messages in the queue, set a maximum to work on

# define the amount of emails you want to send per period. If 0, batch processing
# is disabled and messages are sent out as fast as possible

# define the length of one batch processing period, in seconds (3600 is an hour)

# to avoid overloading the server that sends your email, you can add a little delay
# between messages that will spread the load of sending
# you will need to find a good value for your own server
# value is in seconds, and you can use fractions, eg "0.5" is half a second
# (or you can play with the autothrottle below)

# Mailqueue autothrottle. This will try to automatically change the delay
# between messages to make sure that the MAILQUEUE_BATCH_SIZE (above) is spread evently over
# MAILQUEUE_BATCH_PERIOD, instead of firing the Batch in the first few minutes of the period
# and then waiting for the next period. This only works with mailqueue_throttle off
# and MAILQUEUE_BATCH_PERIOD being a positive value
# it still needs tweaking, so send your feedback to if you find
# any issues with it

# Domain Throttling
# You can activate domain throttling, by setting USE_DOMAIN_THROTTLE to 1
# define the maximum amount of emails you want to allow sending to any domain and the number
# of seconds for that amount. This will make sure you don't send too many emails to one domain
# which may cause blacklisting. Particularly the big ones are tricky about this.
# it may cause a dramatic increase in the amount of time to send a message, depending on how
# many users you have that have the same domain (eg
# if too many failures for throttling occur, the send process will automatically add an extra
# delay to try to improve that. The example sends 1 message every 2 minutes.


# if you have very large numbers of users on the same domains, this may result in the need
# to run processqueue many times, when you use domain throttling. You can also tell phplist
# to simply delay a bit between messages to increase the number of messages sent per queue run
# if you want to use that set this to 1, otherwise simply run the queue many times. A cron
# process every 10 or 15 minutes is recommended.

# to limit the time, regardless of batch processing or other throttling of a single run of "processqueue"
# you can set the MAX_PROCESSQUEUE_TIME in seconds
# if a single queue run exceeds this amount, it will stop, just to pick up from where it left off next time
# this allows multiple installations each to run the queue, but slow installations (eg with large emails)
# set to 0 to disable this feature.






## default system language
# set the default system language. If the language cannot be detected, it will fall back to
# this one. It has to be the "ISO code" of the language.
# to find what languages are available here, check out
$default_system_language = 'en';

## use Precedence
# according to the email standards, the Precedence header is outdated, and should not be used
# however, Google/Gmail requests that the header is used.
# So, it's up to you what to do. Yes, or No. Defaults to "yes" use it
# see also

# the number of criterias you want to be able to select when sending a message.
# Useful is is to make it the same as the number of selectable attributes you enter in the
# system, but that is up to you (selectable = select, radio or checkbox)
define ("NUMCRITERIAS",2);

# if you do not require users to actually sign up to lists, but only want to
# use the subscribe page as a kind of registration system, you can set this to 1 and
# users will not receive an error when they do not check a list to subscribe to

# Show private lists
# If you have a mixture of public and private lists, you can set this to 1, to allow
# your subscribers to see (and unsubscribe from) your private lists on their
# preferences page. By default it won't show private (non-public) lists
# see also

# wrap html
# in some cases, strange newlines appear in the HTML source of campaigns
# If that's happening to you, you may want to set this one
# check for more info
# define('WORDWRAP_HTML',60);

# year ranges. If you use dates, by default the drop down for year will be from
# three years before until 10 years after this the current value for year. If there
# is no current value the current year will be used.
# if you want to use a bigger range you can set the start and end year here
# be aware that the drop down may become very large.
# if set to 0 they will use the default behaviour. So I'm afraid you can't start with
# year 0. Also be aware not to set the end year to something relatively soon in the
# future, or it will stop working when you reach that year.

# empty value prefix. This can be used to identify values in select attributes
# that are not allowed to be selected and cause an error "Please enter your ..."
# by using a top value that starts with this string, you can make sure that the
# selects do not have a default value, that may be accidentally selected
# eg. "-- choose your country"

# admin details for messages
# if this is enabled phplist will initialise the From in new messages to be the
# details of the logged in administrator who is sending the message
# otherwise it will default to the values set in the configure page that identify
# the From for system messages

# test emails
# if you send a test email, phplist will by default send you two emails, one in HTML format
# and the other in Text format. If you set this to 1, you can override this behaviour
# and only have a test email sent to you that matches the user record of the user that the
# test emails are sent to

# send a webpage. You can send the contents of a webpage, by adding
# [URL:http://website/file.html] as the content of a message. This can also be personalised
# for users by using eg
# [URL:http://website/file.html?email=[email]]
# the timeout for refetching a URL can be defined here. When the last time a URL has been
# fetched exceeds this time, the URL will be refetched. This is in seconds, 3600 is an hour
# this only affects sending within the same "process queue". If a new process queue is started
# the URL will be fetched the first time anyway. Therefore this is only useful is processing
# your queue takes longer than the time identified here.

# Users Page Max. The page listing subscribers will stop listing them and require a search,
# when the amount of subscribers is over 1000. With this settings you can change that cut-off point

# Message Age. The Scheduling tab has an option to stop sending a message when it has reached a certain date.
# This can be used to avoid the campaign going out, eg when an event has already taken place.
# This value defaults to the moment of creating the campaign + the number of seconds set here.
# phpList will mark the campaign as sent, when this date has been reached
# 15768000 is about 6 months, but other useful values can be
# 2592000 - 30 days
# 604800 - a week.
# 86400 - a day

# Repetition. This adds the option to repeat the same message in the future.
# After the message has been sent, this option will cause the system to automatically
# create a new message with the same content. Be careful with it, because you may
# send the same message to your users
# the embargo of the message will be increased with the repetition interval you choose
# also read the README.repetition for more info

# admin language
# if you want to disable the language switch for the admin interface (and run all in english)
# set this one to 0



Message sending options
* phpList now only uses phpMailer for sending, but below you can
* tweak a few options on how that is done



# you can specify the location of the phpMailer class here
# if not set, the version included in the distribution will be used
## eg for Debian based systems, it may be something like the example below
## when you do this, you may need to run some tests, to see if the phpMailer version
## you have works ok
#define ('PHPMAILER_PATH','/usr/share/php/libphp-phpmailer/class.phpmailer.php');

# To use a SMTP server please give your server hostname here, leave it blank to use the standard
# PHP mail() command.

# in the above you can specify multiple SMTP servers like this:
# 'server1:port1;server2:port2;server3:port3' eg

# if you want to use smtp authentication when sending the email uncomment the following
# two lines and set the username and password to be the correct ones
#$phpmailer_smtpuser = 'smtpuser';
#$phpmailer_smtppassword = 'smtppassword';

## you can set this to send out via a different SMTP port
# define('PHPMAILERPORT',25);

## test vs blast
# you can send test messages via a different SMTP host than the actual campaign queue
# if not set, these default to the above PHPMAILERHOST and PHPMAILERPORT

# to use SSL/TLS when sending set this value
# it can either be "ssl" or "tls", nothing else
# define("PHPMAILER_SECURE",'ssl');

## Smtp Timeout
## If you use SMTP for sending, you can set the timeout of the SMTP connection
## defaults to 5 seconds
# define('SMTP_TIMEOUT',5);



Advanced Features, HTML editor, RSS, Attachments, Plugins. PDF creation



# Usertrack
# Usertrack is used to track views or opens of campaigns. This only works in HTML messages
# as it relies on a little image being pulled from the phpList system to update the database
# To add it to your campaigns, you need to add [USERTRACK] somewhere.
# From version 3 onwards, this is automatically done with the following setting. If you do not
# want it, you can switch it off here, by uncommenting the next line

# Click tracking
# If you set this to 1, all links in your emails will be converted to links that
# go via phpList. This will make sure that clicks are tracked. This is experimental and
# all your findings when using this feature should be reported to mantis
# for now it's off by default until we think it works correctly

# Click track, list detail
# if you enable this, you will get some extra statistics about unique users who have clicked the
# links in your messages, and the breakdown between clicks from text or html messages.
# However, this will slow down the process to view the statistics, so it is
# recommended to leave it off, but if you're very curious, you can enable it

# phpList can send RSS feeds to users. Feeds can be sent daily, weekly or
# monthly. To use the feature you need XML support in your PHP installation, and you
# need to set this constant to 1
# TODO: (Terabyte) This setting is deprecated cause of the new RSS manager plugin, but that plugin is not complete yet so I'm leaving this in anyway for now since it won't hurt.

# If you want to upload images to the FCKeditor, you need to specify the location
# of the directory where the images go. This needs to be writable by the webserver,
# and it needs to be in your public document (website) area
# the directory is relative to the root of phpList as set above
# This is a potential security risk, so read for more information

# If you want to upload images in the editor, you need to specify the location
# of the directory where the images go. This needs to be writable by the webserver,
# and it needs to be in your public document (website) area
# the directory is relative to the webserver root directory
#   eg if your webserver root is /home/user/public_html
#   then the images directory is /home/user/public_html/uploadimages
# This is a potential security risk, so read for more information

## for the above, you can also use subdirectories, for example

# Manual text part, will give you an input box for the text version of the message
# instead of trying to create it by parsing the HTML version into plain text

# set this to 1 to allow adding attachments to the mails
# caution, message may become very large. it is generally more
# acceptable to send a URL for download to users
# using attachments requires PHP 4.1.0 and up

# when using attachments you can upload them to the server
# if you want to use attachments from the local filesystem (server) set this to 1
# filesystem attachments are attached at real send time of the message, not at
# the time of creating the message

# if you add filesystem attachments, you will need to tell phpList where your
# mime.types file is.

# if a mimetype cannot be determined for a file, specify the default mimetype here:

# you can create your own pages to slot into phpList and do certain things
# that are more specific to your situation (plugins)
# if you do this, you can specify the directory where your plugins are. It is
# useful to keep this outside the phpList system, so they are retained after
# upgrading
# there are some example plugins in the "plugins" directory inside the
# admin directory
# this directory needs to be absolute, or relative to the admin directory


# uncomment this one to see the examples in the system (and then comment the
# one above)

# the attachment repository is the place where the files are stored (if you use
# this needs to be writable to your webserver user
# it also needs to be a full path, not a relative one
# for secutiry reasons it is best if this directory is not public (ie below
# your website document root)
$attachment_repository = '/tmp';

# if you want to be able to send your messages as PDF attachments, you need to install
# FPDF ( and set these variables accordingly

# define('FPDF_FONTPATH','/home/pdf/font/');
# require('fpdf.php');
# define("USE_PDF",1);
# $pdf_font = 'Times';
# $pdf_fontstyle = '';
# $pdf_fontsize = 14;

# the mime type for the export files. You can try changing this to
# application/ to make it open automatically in excel
# or text/tsv
$export_mimetype = 'application/csv';

# if you want to use export format optimized for Excel, set this one to 1

#0013845 Lead Ref Scheme
# When this setting has a value <> '' all succesfull handovers to the MTA will be counted
# and saved in the attribute with the name of this setting.

# tmpdir. A location where phplist can write some temporary files if necessary
# Make sure it is writable by your webserver user, and also check that you have
# open_basedir set to allow access to this directory. Linux users can leave it as it is.
# this directory is used for all kinds of things, mostly uploading of files (like in
# import), creating PDFs and more

# On Linux based systems, it will be good to make sure this directory is on the same
# filesystem as your phpList installation. In some systems, renaming files or directories
# across filesystems fails.

$tmpdir = '/tmp';

# if you are on Windoze, and/or you are not using apache, in effect when you are getting
# "Method not allowed" errors you will want to uncomment this
# ie take off the #-character in the next line
# using this is not guaranteed to work, sorry. Easier to use Apache instead :-)
# $form_action = 'index.php';

# select the database module to use
# anyone wanting to submit other database modules is
# very welcome!
$database_module = "";

# you can store sessions in the database instead of the default place by assigning
# a tablename to this value. The table will be created and will not use any prefixes
# this only works when using mysql and only for administrator sessions
# $SessionTableName = "phplistsessions";



Experimental Features
* these are things that require a bit more fine tuning and feedback in the bugtracker



# email address validation level [Bas]
# 0 = No email address validation. So PHPList can be used as a non-email-sending registration system.
# 1 = 10.4 style email validation.
# 2 = RFC821 email validation without escaping and quoting of local part.
# 3 = RFC821 email validation.
# This is an expirimental email address validation based on the original RFC. It will validate all kind
# of 'weird' emails like !#$%&'*+-/=.?^_`{|} and escaped\ spaces\ are\ allowed@[]
# not implemented are:   
#   Length of domainPart is not checked
#   Not accepted are CR and LF even if escaped by \
#   Not accepted is Folding
#   Not accepted is literal domain-part (eg. [])
#   Not accepted is comments (eg. (this is a comment)
# Extra:
#   topLevelDomain can only be one of the defined ones

# Time Zone
# By default phpList will operate in the Timezone of your server. If you want to work
# in a different Timezone, you can set that here. It will need to be a valid setting for
# both PHP and Mysql. The value should be a city in the world
# to find PHP timezones, check out
# You will also need to tell Mysql about your timezones, which means you have to load the timezone
# data in the Mysql Database, which you can find out about here:
# make sure that the value you use works for both PHP and Mysql. If you find strange discrepancies
# in the dates and times used in phpList, you probably used the wrong value.

# define('SYSTEM_TIMEZONE','Europe/London');

# list exclude will add the option to send a message to users who are on a list
# except when they are on another list.

## message queue prepare
# this option will handle the sending of the queue a little bit differently
# it assumes running the queue many times in small batches
# the first run will find all subscribers that need to receive a campaign and mark them all
# as "todo" in the database. Subsequent calls will then work through the "todo" list and
# send them. This can be useful if the SQL query to find subscribers for a campaign is slow
# which is the case when your database is filling up.
# set to 1 to use

# admin authentication module.
# to validate the login for an administrator, you can define your own authentication module
# this is not finished yet, so don't use it unless you're happy to play around with it
# if you have modules to contribute, open a tracker issue at
# the default module is, which you can find in the "auth" subdirectory of the
# admin directory. It will tell you the functions that need to be defined for phplist to
# retrieve it's information.
# phplist will look for a file in that directory, or you can enter the full path to the file

# eg
#$admin_auth_module = '';

# or
#$admin_auth_module = '/usr/local/etc/';

# stacked attribute selection
# this is a new method of making a selection of attributes to send your messages to
# to start with, it doesn't seem to work very well in Internet Explorer, but it works fine
# using Mozilla, Firefox, Opera (haven't tried any other browsers)
# so if you use IE, you may not want to try this.

# stacked attribute selection allows you to continuously add a selection of attributes
# to your message. This is quite a bit more powerful than the old method, but it can also
# cause very complex queries to be constructed that may take too long to calculate
# If you want to try this, set the value to 1, and give us feedback on how it's going

# if you want to use dates for attribute selections, you need to use this one

## this functionality has been dropped from the core phpList system, but will be added
## using plugin functionality.

# Public protocol
# phpList will automatically use the protocol you run the admin interface on for clicktrack links and
# tracking images
# but if you want to force this to be http, when you eg run the admin on https, uncomment the below line
# see also

# advanced bounce processing
# with advanced bounce handling you are able to define regular expressions that match bounces and the
# action that needs to be taken when an expression matches. This will improve getting rid of bad emails in
# your system, which will be a good thing for making sure you are not being blacklisted by other
# mail systems
# if you use this, you will need to teach your system regularly about patterns in new bounces

# When forwarding ('to a friend') the message will be using the attributes of the destination email by default.
# This often means the message gets stripped of al its attributes.
# When setting this constant to 1, the message will use the attributes of the forwarding user. It can be used
# to connect the destinatory to the forwarder and/or reward the forwarder.

# forward to friend, multiple emails
# This setting defines howmany email addresses you can enter in the forward page.
# Default is 1 to not change behaviour from previous version.

# forward to friend - personal message
# Allow user to add a personal note when forwarding 'to a friend'
# 0 will turn this option off. default is 0 to not change behaviour from previous version.
# 500 is recommended as a sound value to write a little introductory note to a friend
# The note is prepeded to both text and html messages and will be stripped of all html

# different content when forwarding 'to a friend'
# Allow admin to enter a different message that will be sent when forwarding 'to a friend'
# This will show an extra tab in the message dialog.

# there is now support for the use of ADOdb
# this is still experimental, and any findings should be reported in the
# bugtracker
# in order to use it, define the following settings:
#$database_module = '';
#$adodb_inc_file = '/path/to/adodb_inc.php';
#$adodb_driver = 'mysql';
#$adodb_inc_file = '/usr/share/php/adodb/';
$adodb_driver = 'mysql';  // not really a site variable
Posts: 6
Joined: 2:30am, Fri 01 Apr, 2011

Re: Very slow message processing after upgrade to 3.0.6

Postby danwaterloo » 11:58am, Thu 26 Jun, 2014

I'm not sure I would measure the speed of the system while it is in 'test mode'.
did you try it with test=0 ? and while sending a campaign?

sending speed can be affected by a lot of things... the method you use to send (phpmailer, smtp, api to smtp, etc.), database size, the configuration of your computer (ram, disk speed, cpu speed, cache, etc), bandwidth of the internet connection, size/content of the email, and more.

My own system never got faster than about 17k html messages per hour. I like to run it at about 3 or 4k messages/hour, continuously (i.e. a 24/7, for a month straight). Going faster seems to 'violate' many receiving servers max receive rate...

I've also run email campaigns from a script that 'piped' emails right into my email server, bypassing any front end (i.e. phpList). That's faster, but you don't get any advanced features such as bounce processing, analytics, etc.
PL Master
Posts: 276
Joined: 3:51am, Wed 30 Oct, 2013

Re: Very slow message processing after upgrade to 3.0.6

Postby h2ojunkie » 8:04pm, Thu 26 Jun, 2014

Hopefully you are right and it's just test mode that is keeping it running slow at the moment.

I'll have to wait until the 1st of the month when I send our newsletter to see the stats without test mode. Hopefully, it is something with test mode that is slowing it down so much.

It would really suck to go from 30K+ per hour to 4K per hour on the upgrade. If I only got the 17K you get, I'd be happy.

Fingers crossed..I'll post an update when I run a real mail send.

Posts: 6
Joined: 2:30am, Fri 01 Apr, 2011

Re: Very slow message processing after upgrade to 3.0.6

Postby janeyap » 4:30am, Tue 18 Nov, 2014

Hi h2ojunkie,

Do you solve this slowness issue?
I'm having the same problem after upgrade to v3.0.6.
According to my provider, there is no limit set on their server. I also noticed that below error in my event log. Anybody can tell me what went wrong?

Error sending email to The following From address failed: : Called Mail() without being connected

Here is my setting:


# To use a SMTP please give your server hostname here, leave it blank to use the standard
# PHP mail() command.

# if you want to use smtp authentication when sending the email uncomment the following
# two lines and set the username and password to be the correct ones
$phpmailer_smtpuser = '';
$phpmailer_smtppassword = 'xxxxx;
$phpmailer_smtpport = '25';


# define the amount of emails you want to send per period. If 0, batch processing
# is disabled and messages are sent out as fast as possible

# define the length of one batch processing period, in seconds (3600 is an hour)

# to avoid overloading the server that sends your email, you can add a little delay
# between messages that will spread the load of sending
# you will need to find a good value for your own server
# value is in seconds, and you can use fractions, eg "0.5" is half a second
# (or you can play with the autothrottle below)

phpList newbie
Posts: 1
Joined: 12:36am, Tue 18 Nov, 2014

Return to Installing and Upgrading

Who is online

Users browsing this forum: No registered users and 1 guest