PDA

View Full Version : will this bring the server to it's knees?


sabret00the
01-27-2005, 06:18 PM
foreach ($moderatememberaction AS $userid => $action)
{
if ($action == 0)
{ // no point in checking the permission if they dont want to do anything to the group
continue;
}

if ($action == 1)
{ // validate

$validateinfo = $DB_site->query_first("
SELECT user.*
FROM user
");

$DB_site->query("
UPDATE grps_user
SET approved = 1
WHERE groupid = $groupid
AND userid = $userid
");

// add data to their usertable row

// send pm to user to let them know their accounts been validated
$message ="Hey $user, you're request to join $groupname has been accepted! :)";
$user['userid'] = $userid['leaderid'];
$user['username'] = $userid['username'];
$sendto["$username"] = true;
$tostring["$user[userid]"] = $user['username'];
$newpmtitle = "RE: Request To Join" . $validateinfo['title'];

$DB_site->query("
INSERT INTO " . TABLE_PREFIX . "pmtext(fromuserid,fromusername, title, message, touserarray, iconid, dateline,showsignature)
VALUES($bbuserinfo[userid], '" .addslashes($bbuserinfo['username']) . "', '" . addslashes($newpmtitle). "', '".addslashes($message)."', '" . addslashes(serialize($tostring)). "', 0, '" . TIMENOW . "', 1)
");

$pmtextid = $DB_site->insert_id();

$DB_site->query("
INSERT INTO " . TABLE_PREFIX . "pm (pmtextid,userid, messageread)
VALUES ($pmtextid, $validateinfo[userid], 0)
");

$DB_site->shutdown_query("
UPDATE " . TABLE_PREFIX . "user SETpmtotal=pmtotal+1, pmunread=pmunread+1 WHERE userid = $userid
");
}
else if ($action == -1)
{ // delete

$validateinfo = $DB_site->query_first("
SELECT user.*
FROM user
");

$DB_site->query("
DELETE
FROM grps_user
WHERE groupid = $groupid
AND userid = $userid
");

// send pm to let em down gently.
$message ="Sorry $user, you're request to join $groupname has been denied! :(";
$user['userid'] = $validateinfo['userid'];
$user['username'] = $validateinfo['username'];
$sendto["$username"] = true;
$tostring["$user[userid]"] = $user['username'];
$newpmtitle = "RE: Request To Join" . $validateinfo['title'];

$DB_site->query("
INSERT INTO " . TABLE_PREFIX . "pmtext(fromuserid,fromusername, title, message, touserarray, iconid, dateline,showsignature)
VALUES($bbuserinfo[userid], '" .addslashes($bbuserinfo['username']) . "', '" . addslashes($newpmtitle). "', '".addslashes($message)."', '" . addslashes(serialize($tostring)). "', 0, '" . TIMENOW . "', 1)
");

$pmtextid = $DB_site->insert_id();

$DB_site->query("
INSERT INTO " . TABLE_PREFIX . "pm (pmtextid,userid, messageread)
VALUES ($pmtextid, $userid, 0)
");

$DB_site->shutdown_query("
UPDATE " . TABLE_PREFIX . "user SETpmtotal=pmtotal+1, pmunread=pmunread+1 WHERE userid = $userid
");

}
}


admittedly not all the codes right, but you get th eidea of how many queries it's gonna do per record it validates

Colin F
01-27-2005, 06:40 PM
why don't you collect the values you can and then call them after the loop, with something like this:


INSERT INTO " . TABLE_PREFIX : "pm
(pmtextid, userid, messageread)
VALUES
(3, 7, 0),
(2, 9, 0),
(5, 7, 0)

I usually do this by saving everything in an array and then imploding the array.

sabret00the
01-27-2005, 06:44 PM
hmm that's not a bad idea, will it only work for the pm query or willit work for all of em?

also how would i generate the pmtextid's?

Natch
01-28-2005, 02:01 AM
Basically, you will build a multi-dimensional array based on the userid, the actions you want to validate, and the tasks to perform for each action: [userid] => array([actionid] => array([taskid] => array('taskitem1', 'taskitem2', 'taskitem3'))) then you walk thru this array later and build up one query to INSERT each lot of PM text's, run each lot of user UPDATES, etc.

filburt1
01-28-2005, 02:16 AM
You should also look into the switch statement. It won't likely change the speed, but it is a far preferable way to take actions based on multiple values of the same variable.

miz
01-29-2005, 11:59 PM
hmm that's not a bad idea, will it only work for the pm query or willit work for all of em?

also how would i generate the pmtextid's?

like that (i didnt read your code till the end - sorry)



$pmtextid = $DB_site->insert_id();

$DB_site->query("INSERT INTO " . TABLE_PREFIX . "pm (pmtextid,userid, folderid, messageread) VALUES ('$pmtextid', '$userid', '0','0')");

//dont forget to update user pms count

$DB_site->query("
UPDATE " . TABLE_PREFIX . "user
SET pmunread = pmunread+1, pmtotal = pmtotal+1
WHERE userid ='$userid'
");



this is the code i used on my hack,
works like charm

Carnage
01-31-2005, 09:08 AM
might just be me but is selecting everything from the usertable nessisary?


$validateinfo = $DB_site->query_first("
SELECT user.*
FROM user
");


that will cause some slowups imo using something like:


$validateinfo = $DB_site->query_first("
SELECT user.userid, user.username, user.membergroupids (example of rows you need, i dont know which ones these are so i put in some randoms.)
FROM user
WHERE user.userid = $userid
");


may be better