View Issue Details

IDProjectCategoryView StatusLast Update
0001122phplist applicationMessage Send Processpublic24-10-04 00:53
Status resolvedResolutionfixed 
Product Version 
Target VersionFixed in Version2.9.2 
Summary0001122: possible optimisation of sending
Descriptionas suggested by Jeff Mash on the users mailinglist
(Subject [Technical] Attribute Table and Speed date 26/02/04)


Hehe, sorry about mispelling your name earlier!

Anyway, I am trying to figure out ways how to "speed" up the process queue. So here are a couple of questions. I would appreciate you taking the time to read this and respond:

1) Do you always create a new record in the "user_user_attribute" table when a new member is added to the database? Even though I don't have any attributes enabled, I have a record for every subscriber in my "user_user_attribute" table with an attributeid = 0.

2) In processqueue.php, at Line 227, I notice that when you query for your $userlist to send the emails, your statement is like this (psuedocode):

$query = "select distinct userid from ListUserTable,ListMessageTable where (MessageID_From_ListMessage_Table = CurrentMessageID) AND (ListMessageID_From_ListMessageTable = CurrentListID);

In other words, you get the userid from the list user and message tables, but only the ones which apply to the current list and message we're sending.

Well, do you think we can further narrow this query down to only select the users who ALSO don't have the current 'messageid' listed in the usermessage table? In other words, we now only return userids for those who have not been sent the current message.

From what I can see, you update the record in the "_usermessage" table for every user that has been sent the message. So when we process the queue, and you requery to get a new user list (on line 227), couldn't you just modify the query as follows (psuedocode):

$query = "select distinct userid from ListUserTable,ListMessageTable,*UserMessageTable* where (MessageID_From_ListMessage_Table = CurrentMessageID) AND (ListMessageID_From_ListMessageTable = CurrentListID) AND *(MessageID_From_UserMessage_Table = CurrentMessageID)*;

You may be doing this already somewhere else, but I didn't see it.

Anyway, I am a programmer by nature, but I have never written anything in PHP. I'm just trying to help optimize the code in any way possible.

- Jeff

To unsubscribe, e-mail:
For additional commands, e-mail:

TagsNo tags attached.


There are no notes attached to this issue.