I have never had a php class and do not write code for a living, so any suggestions on making this "better" or "correct" are greatly appreciated...so thanks for the heads up PhotoPost.

I have changed the three queries you are talking about to read as follows - they 'work' on my forums and are now counted and timed. Is there any better optimization that can be done on the below queries?
[]// ------------------------------
// Private Message Enhancement Start
// ---------------------------
// Grab total private messages
$query = "
SELECT COUNT(*)
FROM {$config['tbprefix']}Messages AS t1,
{$config['tbprefix']}Users AS t2
WHERE t1.M_Uid = '{$user['U_Number']}'
AND t1.M_Sender = t2.U_Number
";
$sth = $dbh -> do_query($query,__LINE__,__FILE__);
list($pmtotal) = $dbh -> fetch_array($sth);
// ---------------------------------
// Grab total saved private messages
$query = "
SELECT COUNT(*)
FROM {$config['tbprefix']}Messages AS t1,
{$config['tbprefix']}Users AS t2
WHERE t1.M_Uid = '{$user['U_Number']}'
AND t1.M_Sender = t2.U_Number
AND t1.M_Status IN ('S', 'Y')
";
$sth = $dbh -> do_query($query,__LINE__,__FILE__);
list($pmsaved) = $dbh -> fetch_array($sth);
// ---------------------------------
// Grab total sent private messages
$query = "
SELECT COUNT(*)
FROM {$config['tbprefix']}Messages AS t1,
{$config['tbprefix']}Users AS t2
WHERE t1.M_Uid = '{$user['U_Number']}'
AND t1.M_Sender = t2.U_Number
AND t1.M_Status = 'X'
";
$sth = $dbh -> do_query($query,__LINE__,__FILE__);
list($pmsent) = $dbh -> fetch_array($sth);
$pmrec = $pmtotal - $pmsaved - $pmsent;
$max_pm = $config['total_pm'];
$p_pm = (($pmtotal/$config['total_pm']) * 100);
// ----------------------------
// Private Message Enhancement End[/]
Any way you could test this again to see if it fixes the query timing issue? My forums only have 700+ members and do not get regularly hammered...