• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

Deferred Alerts for XF1 [Paid] 1.0.0

No permission to buy ($30.00)

Xon

Well-known member
#1
Xon submitted a new resource:

Deferred Alerts for XF1 - Send alerts/emails later (by seconds)

Designed for when large volumes of alerts and emails are send out on content updates.

It uses the XF deferred system to push alert & email notifications into a new request. This can dramatically reduce memory usage and ensures the large volume of alerts & emails being sent to not impact the original poster.

Note; this has been a private add-on for ~6 months and had worked well on https://forums.spacebattles.com

Supported content types
  • Watched Threads replies.
  • Watched Forums, new threads/replies.
  • XenForo Resource Manager
    • ...
Read more about this resource...
 
Last edited:

RoldanLT

Well-known member
#5
How can I test and verify it works as expected?

I have user1 with an existing thread1.
I created user2 and replied to thread1 as testing.

Right after I posted as user2, I reload the page for user1 then I instantly receive an alert.
I did it multiple times and it works that way always.
Alerts are sent instantly.

Deferred means it must be late to alert user1 right?
 

NixFifty

Well-known member
#6
Deferred means it must be late to alert user1 right?
No, it means they'll be processed in the background. It's more aimed for threads that have a significant number of watchers to be alerted.

Without this add-on, replies on threads like that would cost a fair bit of memory and the user replying would see a delay until all alerts are processed. This add-on mitigates that by pushing alert tasks to the background.
 

Xon

Well-known member
#7
Right after I posted as user2, I reload the page for user1 then I instantly receive an alert.
I did it multiple times and it works that way always.
Alerts are sent instantly.
If you open up your browser debugger tools, you'll see a deferred.php call occur right after you post. This kicks off the notifications.

You can look at the tables; xf_thread_watch_pending and xf_forum_watch_pending to see estimated maximum possible recipients and people number of users actually sent to.

For example;
SQL:
select xf_thread_watch_pending.post_id, thread_id, sent, estimated_count, from_unixtime(start_time) as start_time, (end_time- start_time) as duration
from xf_thread_watch_pending
where from_unixtime(start_time) > '2017-08-01'
order by sent desc
limit 4;

select xf_thread_watch_pending.post_id, thread_id, sent, estimated_count, from_unixtime(start_time) as start_time, (end_time- start_time) as duration
from xf_thread_watch_pending
where from_unixtime(start_time) > '2017-08-01'
order by duration desc
limit 4;
In the last ~25 days;

# post_id, thread_id, sent, estimated_count, start_time, duration
'38156997', '512524', '4224', '4356', '2017-08-13 01:14:11', '35'
'38068269', '512524', '4206', '4310', '2017-08-10 16:11:30', '36'
'38377777', '517894', '4006', '4047', '2017-08-19 12:20:57', '80'
'38219838', '517894', '3999', '4044', '2017-08-14 20:44:55', '31'

# post_id, thread_id, sent, estimated_count, start_time, duration
'38215068', '395276', '6', '141', '2017-08-14 18:18:46', '94'
'38377777', '517894', '4006', '4047', '2017-08-19 12:20:57', '80'
'37994409', '420746', '24', '153', '2017-08-08 13:00:43', '68'
'38494306', '517894', '3767', '4057', '2017-08-22 22:13:17', '67'

And yes, that really is several threads with over 4000 watchers that take between 30 seconds to over a minute to notify

The important thing is the duration column; sure it is spread over multiple deferred.php requests, but you need roughly the same order of magnitude when someone posts a reply which triggers huge numbers of notifications.

No, it means they'll be processed in the background. It's more aimed for threads that have a significant number of watchers to be alerted.
And when you have Persistent Alerts and Thread Starter Alerts setup and have thousands of people being alerted at once.
 

RoldanLT

Well-known member
#8
For a 327 pages thread reply.
1503604202265.png


399 pages thread reply.
1503604282424.png

I guess it works as expected.

Thanks a lot for the explanation.


Edit: On test site I got without this addon I still see the deferred.php call right after I post reply.
 
Last edited: