Here is how vBulletin tracks your session....
1. It has a cookie timeout. When this timeout expires, it marks all forums as read.
2. When you visit, it compares the timestamp in your cookie and profile with the posts and forums. Any that are newer are marked as New.
3. As you view each individual thread, vBulletin updates a second cookie which is only valid as long as you actively visit the site. What it does is add each thread that you have read into this cookie. If a thread is listed here, it overrides the timeout cookie and is marked as read.
vBulletin does not track what forums you view or what threads you view internally. To track threads would create an infinite number of records and kill all but the mightiest server when new threads are updatate.
example:
You have 15,000 threads and 5,000 members (a Medium sized board). When the 15,001st thread is made, instead of writing 1 record, vBulletin would have to write 5,001. One for each member and one for each thread. When the 5,001st member signs up, vBulletin would have to write 15,002 records. One for the user profile and 15,001 to track each existing thread. Of course you can simplify this with default values and other SQL optimizations but your tracking table would still have (members ^ threads) number of records. Or in the example above: 5000 to the power of 15,000.
Again you can simplify this a little but the problem still remains on how to flag each thread. This doesn't even account for resetting the flags every time a new post is made in a thread.
Forums would be a little easier to do but the complexity is again exponential. Imagine a site with 100 or more forums and 18,000 members.
|