I'm making a lottery mod where users can buy tickets and there is a draw every week. The code which checks the numbers::
<?php
/*#####################################################
-LOTTO
-COPYRIGHT William Hector
-For use on The Crime Life only.
######################################################*/
require "mysql.php";
require "global_func.php";
global $c;
// Password
if ($_GET['pass'] != '#########################')
{
die("Go away");
}
$lo=mysql_query("SELECT * FROM lotto WHERE numbers=''",$c) or die(mysql_error());
$l=mysql_fetch_array($lo);
// Number generation
$na=rand(1,40);
$sa = "|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|";
$ga= "|" . $na . "|";
$fa = str_replace($ga, "|", $sa);
$nb=rand(1,39);
$d = explode("|", $fa);
$anb=$d[$nb];
$gb= "|" . $anb . "|";
$fb = str_replace($gb, "|", $fa);
$nc=rand(1,38);
$d3 = explode("|", $fb);
$anc=$d3[$nc];
$gc= "|" . $anc . "|";
$fc = str_replace($gc, "|", $fb);
$nd=rand(1,37);
$d4 = explode("|", $fc);
$and=$d4[$nd];
$gd= "|" . $and . "|";
$fd = str_replace($gd, "|", $fc);
$ne=rand(1,36);
$d5 = explode("|", $fd);
$ane=$d5[$ne];
$ge= "|" . $ane . "|";
$fe = str_replace($ge, "|", $fd);
$nf=rand(1,35);
$d6 = explode("|", $fe);
$anf=$d6[$nf];
$number=$na . "|" . $anb . "|" . $anc . "|" . $and . "|" . $ane . "|" . $anf . "|";
// Ticket check:
$week=$l['weekno'];
echo "Week number:";
echo $week;
$tic = mysql_query("SELECT * FROM lottotic WHERE weekno = {$week}",$c) or die(mysql_error());
if (mysql_num_rows($tic) == 0)
{
die("Oh noes!");
}
while($ti=mysql_fetch_array($tic))
{
$tn=$ti['numbers'];
$t = explode("|", $tn);
if ($na==$t[0] || $na==$t[1] || $na==$t[2] || $na==$t[3] || $na==$t[4] || $na==$t[5])
{
$ck1=1;
}
else
{
$ck1=0;
}
if ($anb==$t[0] || $anb==$t[1] || $anb==$t[2] || $anb==$t[3] || $anb==$t[4] || $anb==$t[5])
{
$ck2=1;
}
else
{
$ck2=0;
}
if ($anc==$t[0] || $anc==$t[1] || $anc==$t[2] || $anc==$t[3] || $anc==$t[4] || $anc==$t[5])
{
$ck3=1;
}
else
{
$ck3=0;
}
if ($and==$t[0] || $and==$t[1] || $and==$t[2] || $and==$t[3] || $and==$t[4] || $and==$t[5])
{
$ck4=1;
}
else
{
$ck4=0;
}
if ($ane==$t[0] || $ane==$t[1] || $ane==$t[2] || $ane==$t[3] || $ane==$t[4] || $ane==$t[5])
{
$ck5=1;
}
else
{
$ck5=0;
}
if ($anf==$t[0] || $anf==$t[1] || $anf==$t[2] || $anf==$t[3] || $anf==$t[4] || $anf==$t[5])
{
$ck6=1;
}
else
{
$ck6=0;
}
$nrt=$ck1+$ck2+$ck3+$ck4+$ck5+$ck6;
if ($nrt>2)
{
$id=$ti['id'];
$userid=$ti['userid'];
mysql_query("INSERT INTO lottowin VALUES('', '{$week}', '{$userid}', '{$nrt}', '{$id}')",$c) or die(mysql_error());
}
}
}
$lid=$l['id'];
mysql_query("UPDATE lotto SET numbers='$number' WHERE id=$lid",$c) or die(mysql_error());
$nxtwk=$week+1;
mysql_query("INSERT INTO lotto VALUES('', '{$nxtwk}', '0', '', '')",$c) or die(mysql_error());
//money
$money=$l['jackpot'];
$mth=($money/100);
$sipt=($mth*60);
$topt=($mth*20);
$tept=($mth*10);
//6 winners
$siwin = mysql_query("SELECT * FROM lottowin WHERE week = {$week} AND nomatch=6",$c) or die(mysql_error());
{
if (mysql_num_rows($siwin) == 0)
{
mysql_query("UPDATE lotto SET jackpot=jackpot+$sipt WHERE weekno=$nxtwk",$c) or die(mysql_error());
}
else
{
$siners=mysql_num_rows($siwin);
$each=$sipt/$siners;
while($w=mysql_fetch_array($siwin))
{
$usr = mysql_query("SELECT * FROM users WHERE userid={$w['userid']}",$c) or die(mysql_error());
$ur=mysql_fetch_array($usr);
$userid=$w['userid'];
$monn=money_formatter($each);
mysql_query("UPDATE users SET money=money+{$each} WHERE userid=$userid",$c) or die(mysql_error());
// event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery with 6 Balls right",$c);
$an=mysql_query("SELECT * FROM lottoan WHERE userid=$userid AND week={$week}",$c) or die(mysql_error());
{
if (mysql_num_rows($an)>0)
{
mysql_query("UPDATE lottoan SET six=six+1, sixmon=sixmon+$each WHERE userid=$userid",$c) or die(mysql_error());
}
else
{
mysql_query("INSERT INTO lottoan VALUES('', '{$week}', '{$userid}', 1, '{$each}', 0, 0, 0, 0, 0, 0)",$c) or die(mysql_error());
}
}
}
}
}
//5balls
$towin = mysql_query("SELECT * FROM lottowin WHERE week = {$week} AND nomatch=5",$c) or die(mysql_error());
$toners=mysql_num_rows($towin);
$each=$topt/$toners;
while($w=mysql_fetch_array($towin))
{
$usr = mysql_query("SELECT * FROM users WHERE userid={$w['userid']}",$c) or die(mysql_error());
$ur=mysql_fetch_array($usr);
$userid=$w['userid'];
$monn=money_formatter($each);
mysql_query("UPDATE users SET money=money+{$each} WHERE userid=$userid",$c) or die(mysql_error());
// event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery with 5 Balls right",$c);
$an=mysql_query("SELECT * FROM lottoan WHERE userid=$userid AND week={$week}",$c) or die(mysql_error());
if (mysql_num_rows($an)>0)
{
mysql_query("UPDATE lottoan SET five=five+1, fivemon=fivemon+$each WHERE userid=$userid",$c) or die(mysql_error());
}
else
{
mysql_query("INSERT INTO lottoan VALUES('', '{$week}', '{$userid}', 0, 0, 1, '{$each}', 0, 0, 0, 0)",$c) or die(mysql_error());
}
}
//4balls
$fowin = mysql_query("SELECT * FROM lottowin WHERE week = {$week} AND nomatch=4",$c) or die(mysql_error());
$foners=mysql_num_rows($fowin);
$each=$tept/$foners;
while($w=mysql_fetch_array($fowin))
{
$usr = mysql_query("SELECT * FROM users WHERE userid={$w['userid']}",$c) or die(mysql_error());
$ur=mysql_fetch_array($usr);
$userid=$w['userid'];
$monn=money_formatter($each);
mysql_query("UPDATE users SET money=money+{$each} WHERE userid=$userid",$c) or die(mysql_error());
// event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery with 4 Balls right",$c);
$an=mysql_query("SELECT * FROM lottoan WHERE userid=$userid AND week={$week}",$c) or die(mysql_error());
if (mysql_num_rows($an)>0)
{
mysql_query("UPDATE lottoan SET four=four+1, fourmon=fourmon+$each WHERE userid=$userid",$c) or die(mysql_error());
}
else
{
mysql_query("INSERT INTO lottoan VALUES('', '{$week}', '{$userid}', 0, 0, 0, 0, 1, '{$each}', 0, 0)",$c) or die(mysql_error());
}
}
//3 balls
$thwin = mysql_query("SELECT * FROM lottowin WHERE week = {$week} AND nomatch=3",$c) or die(mysql_error());
while($w=mysql_fetch_array($thwin))
{
$usr = mysql_query("SELECT * FROM users WHERE userid={$w['userid']}",$c) or die(mysql_error());
$ur=mysql_fetch_array($usr);
mysql_query("UPDATE users SET money=money+100 WHERE userid=$userid",$c) or die(mysql_error());
// event_add($userid,"Congratualtions {$ur['username']}, you have won /$100 on the lottery with 3 Balls right",$c);
$an=mysql_query("SELECT * FROM lottoan WHERE userid=$userid AND week={$week}",$c) or die(mysql_error());
if (mysql_num_rows($an)>0)
{
mysql_query("UPDATE lottoan SET three=three+1, threemon=threemon+10 WHERE userid=$userid",$c) or die(mysql_error());
}
else
{
mysql_query("INSERT INTO lottoan VALUES('', '{$week}', '{$userid}', 0, 0, 0, 0, 0, 0, 1, 10)",$c) or die(mysql_error());
}
}
$anw = mysql_query("SELECT * FROM lottoan WHERE week = {$week}",$c) or die(mysql_error());
while($w=mysql_fetch_array($anw))
{
$userid=$w['userid'];
$usr = mysql_query("SELECT * FROM users WHERE userid={$w['userid']}",$c) or die(mysql_error());
$ur=mysql_fetch_array($usr);
if ($w['six'] > 0)
{
$tic=$w['six'];
$mon=$w['sixmon'];
$monn=money_formatter($mon);
event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery by getting 6 balls right with $tic ticket(s)",$c);
}
if ($w['four'] > 0)
{
$tic=$w['four'];
$mon=$w['fourmon'];
$monn=money_formatter($mon);
event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery by getting 4 balls right with $tic ticket(s)",$c);
}
if ($w['five'] > 0)
{
$tic=$w['five'];
$mon=$w['fivemon'];
$monn=money_formatter($mon);
event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery by getting 5 balls right with $tic ticket(s)",$c);
}
if ($w['three'] > 0)
{
$tic=$w['three'];
$mon=$w['threemon'];
$monn=money_formatter($mon);
event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery by getting 3 balls right with $tic ticket(s)",$c);
}
}
?>
Produced an out of memory problem when there where over 1 million tickets. To fix this I replaced it with:
<?php
/*#####################################################
-LOTTO
-COPYRIGHT William Hector
-For use on The Crime Life only.
######################################################*/
require "mysql.php";
require "global_func.php";
global $c;
// Password
if ($_GET['pass'] != '#########################')
{
die("Go away");
}
$lo=mysql_query("SELECT * FROM lotto WHERE numbers=''",$c) or die(mysql_error());
$l=mysql_fetch_array($lo);
// Number generation
$na=rand(1,40);
$sa = "|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|";
$ga= "|" . $na . "|";
$fa = str_replace($ga, "|", $sa);
$nb=rand(1,39);
$d = explode("|", $fa);
$anb=$d[$nb];
$gb= "|" . $anb . "|";
$fb = str_replace($gb, "|", $fa);
$nc=rand(1,38);
$d3 = explode("|", $fb);
$anc=$d3[$nc];
$gc= "|" . $anc . "|";
$fc = str_replace($gc, "|", $fb);
$nd=rand(1,37);
$d4 = explode("|", $fc);
$and=$d4[$nd];
$gd= "|" . $and . "|";
$fd = str_replace($gd, "|", $fc);
$ne=rand(1,36);
$d5 = explode("|", $fd);
$ane=$d5[$ne];
$ge= "|" . $ane . "|";
$fe = str_replace($ge, "|", $fd);
$nf=rand(1,35);
$d6 = explode("|", $fe);
$anf=$d6[$nf];
$number=$na . "|" . $anb . "|" . $anc . "|" . $and . "|" . $ane . "|" . $anf . "|";
// Ticket check:
$week=$l['weekno'];
echo "Week number:";
echo $week;
$ticyuy = mysql_query("SELECT COUNT(*) FROM lottotic WHERE weekno = {$week}",$c) or die(mysql_error());
$ticyu = mysql_fetch_array($ticyuy);
$tot=$ticyu[0];
if ($ticyu[0] == 0)
{
die("Oh noes!");
}
for ($y=0; $y<10; $y++)
{
$ticyuy = mysql_query("SELECT COUNT(*) FROM lottotic WHERE weekno = {$week}",$c) or die(mysql_error());
$ticyu = mysql_fetch_array($ticyuy);
$tot=$ticyu[0];
$div=$tot/10;
$start=$div*$y;
$tic = mysql_query("SELECT * FROM lottotic WHERE weekno = {$week} LIMIT {$start},{$div}",$c) or die(mysql_error());
while($ti=mysql_fetch_array($tic))
{
$tn=$ti['numbers'];
$t = explode("|", $tn);
if ($na==$t[0] || $na==$t[1] || $na==$t[2] || $na==$t[3] || $na==$t[4] || $na==$t[5])
{
$ck1=1;
}
else
{
$ck1=0;
}
if ($anb==$t[0] || $anb==$t[1] || $anb==$t[2] || $anb==$t[3] || $anb==$t[4] || $anb==$t[5])
{
$ck2=1;
}
else
{
$ck2=0;
}
if ($anc==$t[0] || $anc==$t[1] || $anc==$t[2] || $anc==$t[3] || $anc==$t[4] || $anc==$t[5])
{
$ck3=1;
}
else
{
$ck3=0;
}
if ($and==$t[0] || $and==$t[1] || $and==$t[2] || $and==$t[3] || $and==$t[4] || $and==$t[5])
{
$ck4=1;
}
else
{
$ck4=0;
}
if ($ane==$t[0] || $ane==$t[1] || $ane==$t[2] || $ane==$t[3] || $ane==$t[4] || $ane==$t[5])
{
$ck5=1;
}
else
{
$ck5=0;
}
if ($anf==$t[0] || $anf==$t[1] || $anf==$t[2] || $anf==$t[3] || $anf==$t[4] || $anf==$t[5])
{
$ck6=1;
}
else
{
$ck6=0;
}
$nrt=$ck1+$ck2+$ck3+$ck4+$ck5+$ck6;
if ($nrt>2)
{
$id=$ti['id'];
$userid=$ti['userid'];
mysql_query("INSERT INTO lottowin VALUES('', '{$week}', '{$userid}', '{$nrt}', '{$id}')",$c) or die(mysql_error());
}
}
}
$lid=$l['id'];
mysql_query("UPDATE lotto SET numbers='$number' WHERE id=$lid",$c) or die(mysql_error());
$nxtwk=$week+1;
mysql_query("INSERT INTO lotto VALUES('', '{$nxtwk}', '0', '', '')",$c) or die(mysql_error());
//money
$money=$l['jackpot'];
$mth=($money/100);
$sipt=($mth*60);
$topt=($mth*20);
$tept=($mth*10);
//6 winners
$siwin = mysql_query("SELECT * FROM lottowin WHERE week = {$week} AND nomatch=6",$c) or die(mysql_error());
{
if (mysql_num_rows($siwin) == 0)
{
mysql_query("UPDATE lotto SET jackpot=jackpot+$sipt WHERE weekno=$nxtwk",$c) or die(mysql_error());
}
else
{
$siners=mysql_num_rows($siwin);
$each=$sipt/$siners;
while($w=mysql_fetch_array($siwin))
{
$usr = mysql_query("SELECT * FROM users WHERE userid={$w['userid']}",$c) or die(mysql_error());
$ur=mysql_fetch_array($usr);
$userid=$w['userid'];
$monn=money_formatter($each);
mysql_query("UPDATE users SET money=money+{$each} WHERE userid=$userid",$c) or die(mysql_error());
// event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery with 6 Balls right",$c);
$an=mysql_query("SELECT * FROM lottoan WHERE userid=$userid AND week={$week}",$c) or die(mysql_error());
{
if (mysql_num_rows($an)>0)
{
mysql_query("UPDATE lottoan SET six=six+1, sixmon=sixmon+$each WHERE userid=$userid",$c) or die(mysql_error());
}
else
{
mysql_query("INSERT INTO lottoan VALUES('', '{$week}', '{$userid}', 1, '{$each}', 0, 0, 0, 0, 0, 0)",$c) or die(mysql_error());
}
}
}
}
}
//5balls
$towin = mysql_query("SELECT * FROM lottowin WHERE week = {$week} AND nomatch=5",$c) or die(mysql_error());
$toners=mysql_num_rows($towin);
$each=$topt/$toners;
while($w=mysql_fetch_array($towin))
{
$usr = mysql_query("SELECT * FROM users WHERE userid={$w['userid']}",$c) or die(mysql_error());
$ur=mysql_fetch_array($usr);
$userid=$w['userid'];
$monn=money_formatter($each);
mysql_query("UPDATE users SET money=money+{$each} WHERE userid=$userid",$c) or die(mysql_error());
// event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery with 5 Balls right",$c);
$an=mysql_query("SELECT * FROM lottoan WHERE userid=$userid AND week={$week}",$c) or die(mysql_error());
if (mysql_num_rows($an)>0)
{
mysql_query("UPDATE lottoan SET five=five+1, fivemon=fivemon+$each WHERE userid=$userid",$c) or die(mysql_error());
}
else
{
mysql_query("INSERT INTO lottoan VALUES('', '{$week}', '{$userid}', 0, 0, 1, '{$each}', 0, 0, 0, 0)",$c) or die(mysql_error());
}
}
//4balls
$fowin = mysql_query("SELECT * FROM lottowin WHERE week = {$week} AND nomatch=4",$c) or die(mysql_error());
$foners=mysql_num_rows($fowin);
$each=$tept/$foners;
while($w=mysql_fetch_array($fowin))
{
$usr = mysql_query("SELECT * FROM users WHERE userid={$w['userid']}",$c) or die(mysql_error());
$ur=mysql_fetch_array($usr);
$userid=$w['userid'];
$monn=money_formatter($each);
mysql_query("UPDATE users SET money=money+{$each} WHERE userid=$userid",$c) or die(mysql_error());
// event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery with 4 Balls right",$c);
$an=mysql_query("SELECT * FROM lottoan WHERE userid=$userid AND week={$week}",$c) or die(mysql_error());
if (mysql_num_rows($an)>0)
{
mysql_query("UPDATE lottoan SET four=four+1, fourmon=fourmon+$each WHERE userid=$userid",$c) or die(mysql_error());
}
else
{
mysql_query("INSERT INTO lottoan VALUES('', '{$week}', '{$userid}', 0, 0, 0, 0, 1, '{$each}', 0, 0)",$c) or die(mysql_error());
}
}
//3 balls
$thwin = mysql_query("SELECT * FROM lottowin WHERE week = {$week} AND nomatch=3",$c) or die(mysql_error());
while($w=mysql_fetch_array($thwin))
{
$usr = mysql_query("SELECT * FROM users WHERE userid={$w['userid']}",$c) or die(mysql_error());
$ur=mysql_fetch_array($usr);
mysql_query("UPDATE users SET money=money+100 WHERE userid=$userid",$c) or die(mysql_error());
// event_add($userid,"Congratualtions {$ur['username']}, you have won /$100 on the lottery with 3 Balls right",$c);
$an=mysql_query("SELECT * FROM lottoan WHERE userid=$userid AND week={$week}",$c) or die(mysql_error());
if (mysql_num_rows($an)>0)
{
mysql_query("UPDATE lottoan SET three=three+1, threemon=threemon+10 WHERE userid=$userid",$c) or die(mysql_error());
}
else
{
mysql_query("INSERT INTO lottoan VALUES('', '{$week}', '{$userid}', 0, 0, 0, 0, 0, 0, 1, 10)",$c) or die(mysql_error());
}
}
$anw = mysql_query("SELECT * FROM lottoan WHERE week = {$week}",$c) or die(mysql_error());
while($w=mysql_fetch_array($anw))
{
$userid=$w['userid'];
$usr = mysql_query("SELECT * FROM users WHERE userid={$w['userid']}",$c) or die(mysql_error());
$ur=mysql_fetch_array($usr);
if ($w['six'] > 0)
{
$tic=$w['six'];
$mon=$w['sixmon'];
$monn=money_formatter($mon);
event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery by getting 6 balls right with $tic ticket(s)",$c);
}
if ($w['four'] > 0)
{
$tic=$w['four'];
$mon=$w['fourmon'];
$monn=money_formatter($mon);
event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery by getting 4 balls right with $tic ticket(s)",$c);
}
if ($w['five'] > 0)
{
$tic=$w['five'];
$mon=$w['fivemon'];
$monn=money_formatter($mon);
event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery by getting 5 balls right with $tic ticket(s)",$c);
}
if ($w['three'] > 0)
{
$tic=$w['three'];
$mon=$w['threemon'];
$monn=money_formatter($mon);
event_add($userid,"Congratualtions {$ur['username']}, you have won {$monn} on the lottery by getting 3 balls right with $tic ticket(s)",$c);
}
}
?>
This one produces the error that the execution time has exceeded 30 seconds.
Is there anyway to optimize this code so it runs faster? I have tried dividing it into two pages but the but which checks the tickets still takes longer than 30 seconds.
Any help will be appreciated.
Thanks in advance.