Last modified: 2010-05-15 15:48:27 UTC
Some of our articles have 1200+ accounts watching. We've found that 50-100 notifications are sent before the update is lost and the rest of the notifications fail. The problem is max_execution_time in PHP.ini. Unless we tweak this value, we're limited to the number of notifications that can be sent in 30 seconds. For 1200 notifications, we're guessing we'd have to tweak it to 20 minutes. Most editors will assume there's a been a failure if it takes 20 minutes to make an update. The best solution would seem to be less e-mail. Would it be possible to have multiple addresses on the same message? Maybe use the BCC field to hide them? Does SMTP have limits on adresses or field size? Or...would it possible to have the update made BEFORE the notifications are sent? I don't know if that would change the editors' experience in terms of wait time, but updates wouldn't be lost.
The notification mails have per-user customizations, including language preference and the last-seen version used to create diff links, so it's necessary to do generate them per-user. There probably are optimizations that can be made, though. Sending multiple mails over one connections? Batching? Background queue? Dunno exactly.
River has introduced the $wgEnotifImpersonal and $wgEnotifUseJobQ options in trunk to help with large sites.
Fixed by r21897 r21898 r21924 r21925 r21961 at least. Those would be in MediaWiki 1.11.