我有一個足球幻想聯盟的PHP腳本,有20個球隊和400多名球員分配到球隊,我有500個用戶。向數據庫添加一些數據後,php更新代碼很慢?
每個星期都應該給每個玩家分配一個分數,這樣最終每個用戶都會有一個總分數,並且這個分數會產生本賽季的排名。
正常添加了第一週的積分,但第二週的積分變得非常緩慢,第三週的積分出現套接字超時錯誤。
這裏是我使用的是在加分的用戶代碼:
// Adding Point To the user player list
$sql_user="select * from ".$prev."user LIMIT 0, 100 ";
$re_user=mysql_query($sql_user);
while($d_user=mysql_fetch_array($re_user))
{
$userID=$d_user['id'];
$sql_addpointgroup="select * from ".$prev."addpoint group by weekno order by weekno";
$re_addpointgroup=mysql_query($sql_addpointgroup);
while($d_addpointgroup=mysql_fetch_array($re_addpointgroup))
{
$points=0;
$sql_addpoint="select * from ".$prev."addpoint where weekno='".$d_addpointgroup['weekno']."'";
$re_addpoint=mysql_query($sql_addpoint);
while($d_addpoint=mysql_fetch_array($re_addpoint))
{
$points=$d_addpoint['points'];
$sql_weekstatistic="select * from ".$prev."weekstatistic where weekno='".$d_addpointgroup['weekno']."' and userID='$userID' and playerID='".$d_addpoint['playerID']."'";
$re_weekstatistic=mysql_query($sql_weekstatistic);
if(mysql_num_rows($re_weekstatistic)>0)
{
$sql_update="update ".$prev."weekstatistic set points='$points' where weekno='".$d_addpointgroup['weekno']."' and userID='$userID' and playerID='".$d_addpoint['playerID']."'";
mysql_query($sql_update);
}
}
}
}
我有限的用戶數100個用戶每提交即使這樣的代碼仍然緩慢。
慢的只有這個代碼其他網站部分正常工作。
有什麼方法可以用其他更快的方式編寫代碼,或者如果還有其他事情我可以做?
許多在此先感謝,
僅供參考,您的查詢可能並不安全。您不會轉義任何數據以用於查詢,並且可能會被黑客入侵。考慮使用PDO準備好的查詢來避免此問題。 – Brad
我想補充,如果你不希望使用PDO可以使用real_escape_string()來防止SQL注入黑客攻擊你的腳本。這是一個很好的鏈接,展示瞭如何使用它。 http://php.net/manual/en/mysqli.real-escape-string.php – Ishikawa
請您解釋一下,並檢查您是否使用了正確索引的查詢,沒有全表掃描等。 – jfried