私はサッカー ファンタジー リーグの php スクリプトを持っています。20 のチームと 400 人以上のプレーヤーがチームに割り当てられており、500 人のユーザーがいます。
毎週、各プレーヤーにポイントが割り当てられる必要があるため、最終的にすべてのユーザーがフォーメーションから合計ポイントを取得し、シーズンのランキングが生成されます。
1週目ポイントは正常に追加されましたが、2週目ポイントでaddpontセクションが非常に遅くなり、3週目ポイントでソケットタイムアウトエラーが発生しました。
ユーザーにポイントを追加する際に使用しているコードは次のとおりです。
// 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 ユーザーに制限しましたが、それでもコードは遅くなります。
速度が遅いのはこのコードのみで、他の Web サイト セクションは正常に動作しています。
他のより速い方法でコードを書く方法はありますか、それとも何か他にできることはありますか?
よろしくお願いします。