For fun I did some speed tests again, since opq is feature compete
enough to give reasonable comparisons.
For all tests, I am using a fast MTA, and no click-tracking. I hacked
the phplist install to use smtp keepalives so the regular processqueue
is slightly faster than it is out of the box. I am using 2.10.2.
USE_MANUAL_TEXT_PART is enabled.
test 1. message with lots of placeholders. No template, and used the
following for both the text and html parts:
confirmationurl: [CONFIRMATIONURL]
domain: [DOMAIN]
forward: [FORWARD]
forwardform: [FORWARDFORM]
forwardurl: [FORWARDURL]
listowner: [LISTOWNER]
lists: [LISTS]
preferences: [PREFERENCES]
preferencesurl: [PREFERENCESURL]
signature: [SIGNATURE]
subscribe: [SUBSCRIBE]
subscribeurl: [SUBSCRIBEURL]
unsubscribe: [UNSUBSCRIBE]
unsubscribeurl: [UNSUBSCRIBEURL]
userid: [USERID]
usertrack: [USERTRACK]
website: [WEBSITE]
1a - phplist processqueue:
PHPlist version 2.10.2 (c) 2000-2006 Tincan Ltd,
http://www.phplist.com
Started
Processing has started, 1 message(s) to process.
Processing message 140
Looking for users
Found them: 1002 to process
Processed 1002 out of 1002 users
It took 6 mins 55 secs to send this message
Script stage: 5
1002 messages sent in 414.92 seconds (8693 msgs/hr)
Finished this run
1b - opq, batchsize of 40
opq: initialized.
QueueProcessor: initialized with batchSize 40, limit 0
QueueProcessor: started processing.
PluginController: loaded plugin Template
PluginController: loaded plugin Footer
PluginController: loaded plugin SystemPlaceholders
PluginController: loaded plugin PersonalPlaceholders
PluginController: loaded plugin TextURLs
PluginController: initialized with 5 plugins, 5 sysvars and 8 pervars.
PluginController: message 141 has 8 personalizable variables.
Message: message 141 being delivered using normal mode.
QueueProcessor: message 141 starting delivery.
BatchProcessor: message 141 delivered batch of 40.
BatchProcessor: message 141 delivered batch of 40.
...
BatchProcessor: message 141 delivered batch of 40.
BatchProcessor: message 141 delivered batch of 40.
BatchProcessor: message 141 delivered batch of 2.
QueueProcessor: message 141 finished.
Logger: Message 141 successes/failures: 1002/0
QueueProcessor: finished processing.
opq: 1002 entries processed in 41.262358 seconds.
1c - opq, batchsize of 200
opq: initialized.
QueueProcessor: initialized with batchSize 200, limit 0
QueueProcessor: started processing.
PluginController: loaded plugin Template
PluginController: loaded plugin Footer
PluginController: loaded plugin SystemPlaceholders
PluginController: loaded plugin PersonalPlaceholders
PluginController: loaded plugin TextURLs
PluginController: initialized with 5 plugins, 5 sysvars and 8 pervars.
PluginController: message 142 has 8 personalizable variables.
Message: message 142 being delivered using normal mode.
QueueProcessor: message 142 starting delivery.
BatchProcessor: message 142 delivered batch of 200.
BatchProcessor: message 142 delivered batch of 200.
BatchProcessor: message 142 delivered batch of 200.
BatchProcessor: message 142 delivered batch of 200.
BatchProcessor: message 142 delivered batch of 200.
BatchProcessor: message 142 delivered batch of 2.
QueueProcessor: message 142 finished.
Logger: Message 142 successes/failures: 1002/0
QueueProcessor: finished processing.
opq: 1002 entries processed in 40.803719 seconds.
So, in that test, opq is 10x as fast and batchsize doesn't seem to
make a difference.
test 2. using a message that has explicit text and html portions, with
NO personalizable placeholders. no template or footer. message is
about 30k text+html combined.
1a. phplist processqueue
PHPlist version 2.10.2 (c) 2000-2006 Tincan Ltd,
http://www.phplist.com
Started
Processing has started, 1 message(s) to process.
Processing message 145
Looking for users
Found them: 1002 to process
Processed 1002 out of 1002 users
It took 20 mins 31 secs to send this message
Script stage: 5
1002 messages sent in 1231.01 seconds (2930 msgs/hr)
Finished this run
1b. opq, batchsize 200, normal mode
opq: initialized.
QueueProcessor: initialized with batchSize 200, limit 0
QueueProcessor: started processing.
PluginController: loaded plugin Template
PluginController: loaded plugin Footer
PluginController: loaded plugin SystemPlaceholders
PluginController: loaded plugin PersonalPlaceholders
PluginController: loaded plugin TextURLs
PluginController: initialized with 5 plugins, 5 sysvars and 8 pervars.
PluginController: message 146 has 0 personalizable variables.
Message: message 146 being delivered using normal mode.
QueueProcessor: message 146 starting delivery.
BatchProcessor: message 146 delivered batch of 200.
BatchProcessor: message 146 delivered batch of 200.
BatchProcessor: message 146 delivered batch of 200.
BatchProcessor: message 146 delivered batch of 200.
BatchProcessor: message 146 delivered batch of 200.
BatchProcessor: message 146 delivered batch of 2.
QueueProcessor: message 146 finished.
Logger: Message 146 successes/failures: 1002/0
QueueProcessor: finished processing.
opq: 1002 entries processed in 263.100154 seconds.
1c. opq, batchsize 200, fast mode
opq: initialized.
QueueProcessor: initialized with batchSize 200, limit 0
QueueProcessor: started processing.
PluginController: loaded plugin Template
PluginController: loaded plugin Footer
PluginController: loaded plugin SystemPlaceholders
PluginController: loaded plugin PersonalPlaceholders
PluginController: loaded plugin TextURLs
PluginController: initialized with 5 plugins, 5 sysvars and 8 pervars.
PluginController: message 147 has 0 personalizable variables.
Message: message 147 being delivered using fast mode.
QueueProcessor: message 147 starting delivery.
BatchProcessor: message 147 delivered batch of 200.
BatchProcessor: message 147 delivered batch of 200.
BatchProcessor: message 147 delivered batch of 200.
BatchProcessor: message 147 delivered batch of 200.
BatchProcessor: message 147 delivered batch of 200.
BatchProcessor: message 147 delivered batch of 2.
QueueProcessor: message 147 finished.
Logger: Message 147 successes/failures: 1002/0
QueueProcessor: finished processing.
opq: 1002 entries processed in 6.104814 seconds.
pretty good results although that fast mode is 200x faster is solely a function of that I send a message to 200 recipients per piece of mail submitted. I need to do much larger tests actually to see how this might perform. I also won't be testing it on live recipients either which certainly skews the results.
anyways i'll do more tests when i do a few other things, like make sure that the messages sent out by opq can still be handled by the bounce system.
-oliver