Each forum is set upon a database, which is run with PHP and MySQL on the Forumotion forums. Per each request to the server, a certain amount of "query level" is allowed at one time. Because of this, it requires that only a specific amount be pulled from the database at once to ensure a smooth operation of the forum.
If all of your posts were to be retrieved for every single member, the speed of the forum will be drastically reduced. Each query to the server database goes something like this:
- Code:
$result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); |
Now, imagine running thousands to millions, and doing it within a certain algorithm as the one given... The result of doing every single history would be useless as much of the older history is uninteresting to users. However, what do we do about someone who wants to find something they posted a long time ago? Instead of relying on the database, it is easier to just search in a search engine and/or find the topic yourself.
The database does a running history on a normal basis, so if you were to delete 300 posts from a user, you would see the next 300, and so on. However, the algorithm is set where it is to avoid overrunning the database, since it isn't necessary to do so.
No matter what forum you may look upon, very few allow you to see entire histories. This does provide some level of protection for the user. Some administrators, especially for boards that allow you more control of your SQL server will show more topic history. However, it is not good practice to enforce full history, just as it is not good practice to allow guests to post messages on every forum you have.
If we were to build our own PHP board, instead of using the preset forums given by Forumactif, we could see something like this:
- Code:
$sql_array = array(
'SELECT' => 'f.*',
'FROM' => array(
FORUMS_WATCH_TABLE => 'fw',
FORUMS_TABLE => 'f',
),
'WHERE' => 'fw.user_id = ' . $user->data['user_id'] . '
AND f.forum_id = fw.forum_id',
'ORDER_BY' => 'left_id',
);
if ($config['load_db_lastread'])
{
$sql_array['LEFT_JOIN'] = array(
array(
'FROM' => array(FORUMS_TRACK_TABLE => 'ft'),
'ON' => 'ft.user_id = ' . $user->data['user_id'] . '
AND ft.forum_id = f.forum_id',
),
);
$sql_array['SELECT'] .= ', ft.mark_time ';
}
else
{
// Here we read the cookie data
}
$sql = $db->sql_build_query('SELECT', $sql_array);
// run the query with a LIMIT 10,5 (10th row, 5 results)
$result = $db->sql_query_limit($sql, 10, 5);
You define how the query is built and process it forward to the server. You will see server statistics if you build the board yourself. Very interesting for some, but I couldn't care less as long as my board stays active and optimized to load quickly enough.
Do you see the bottom row of my code I displayed? It shows the ability to limit the query, which is how Forumactif builds the queries for the database.
You would be much more glad the full history is not for each user. How to obtain it? Not available, because each board is set up by the techs and unmodified except for updates only.
Reference material