我有一些PHP mysql代码可以插入表中(如下所示)。在我家里的盒子上似乎运行良好,但在我托管的生产服务器上,我得到了令人难以置信的记忆,运行和减速。
Column Type Null Default Comments
uid int(1) No
CUID int(11) No
AUID int(11) No
user varchar(10) No
position varchar(15) No
User Added By varchar(10) No
Added On datetime No Indexes
Keyname Type Unique Packed Column Cardinality Collation Null Comment
PRIMARY BTREE Yes No uid 17196 A No
AUID BTREE No No AUID 9 A No
user BTREE No No user 150 A No
CUID BTREE No No CUID 3439 A No
Space usage:
Data 794,776 B
Index 605,184 B
Total 1,367 KiB
Row Statistics:
Format dynamic
Rows 17,196
Row length ø 46
Row size ø 81 B
Next autoindex 27,104
当我转到表单所在的网页时,我填写表格并插入此表格。第一次速度合理。第二次页面需要10秒才能完成,当我检查托管服务器上的内存日志等时,RAM会达到所有限制。
From ▴ To aCPU mCpu aEP mEP lEP aMEM mMEM lMEM MemF MepF
02-27 10:08 02-27 10:09 12 62 1 3 20 359.1M 4.0G 4.0G 1 0
02-27 10:07 02-27 10:08 0 0 0 0 20 4.1M 4.1M 4.0G 0 0
02-27 10:06 02-27 10:07 0 0 0 0 20 4.1M 4.1M 4.0G 0 0
02-27 10:05 02-27 10:06 0 0 0 0 20 4.1M 4.1M 4.0G 0 0
02-27 10:04 02-27 10:05 25 62 1 4 20 22.5M 59.8M 4.0G 0 0
02-27 10:00 02-27 10:05 0 0 0 2 20 4.6M 22.7M 4.0G 0 0
02-27 09:00 02-27 10:00 0 75 0 4 20 5.8M 452.7M 4.0G 0 0
02-27 08:00 02-27 09:00 0 0 0 1 20 284K 18.1M 4.0G 0 0
注意第一行中的4.0G。
我真的很担心这可能是什么。托管的地方正在使用suPHP,我听说曾经有过这方面的漏洞(但那是几年前发生的)。
也许这是不现实的,但是在这个表中进行一次插入(我认为这个相对较小)不应该导致整个地方出现内存问题。这是insert语句:
mysql_query('INSERT INTO call_member SET user="'.$user.'", position="'.$position.'", CUID="'.$CUID.'", AUID="'.$apparatus.'", `LOSAP Added By`="'.$losap_added_by.'", `Added On`=NOW()');
现在,我知道我需要切换到mysqli。这是短期计划。
什么会杀死服务器?我和托管公司合作,他们的服务器显得很好。
我不是完全确定这会导致内存问题,但每次运行这段代码时都会发生这种情况。所以,我相信这是原因。任何想法都将不胜感激。
[添加更多代码]
$query = 'SELECT USER FROM member WHERE USER = "'.strtolower($user).'"';
$ck = squery( $query );
$num_entries = mysql_num_rows( $ck );
$row_person = mysql_fetch_assoc($ck);
$query = 'SELECT USER FROM call_member WHERE CUID='.$_REQUEST['CUID'].' AND USER = "'.strtolower($user).'" LIMIT 1';
$ck = squery( $query );
if( $num_entries == 1 && mysql_num_rows($ck) == 0 )
{
if( $num_entries == 1 )
{
$query = 'INSERT INTO call_member SET LOSAP="'.$row_person['LOSAP'].'", ccnumber ="' . $ccnumber . '", position="'.$position.'", CUID="'.$CUID.'", apparatus="'.$apparatus .'", `LOSAP Added By`="'.$user_added_by.'", `Added On`=NOW()';
$result = squery( $query );
}
else
{
print '<div>Error: Could not find a user number or unique person for "'.$user.'" or the person is not a current member.</div>';
}
}
我在include函数中定义了一个函数squery:
function squery( $query )
{
$result = mysql_query( $query );
print mysql_error();
return $result;
}
答案 0 :(得分:0)
你的淘气方法:
函数squery($ query)
{
$result = mysql_query( $query );
print mysql_error();
}
应该有:
return $result;
最后。