Ciao a tutti ,
Da circa un anno sto scrivendo uno script per il gioco del fantacalcio, purtroppo verso la fine del campionato mi sono accorto di un problema a cui non riesco a trovare una soluzione, quindi vi chiedo consigli/aiuti per risolvere il problema del timeout.
Cominciamo da una descrizione generale della tabella del mysql e del codice php
Codice PHP:
CREATE TABLE `players` (
`id` int(1) NOT NULL auto_increment,
`idplayer` int(3) NOT NULL default '0',
`week` int(1) NOT NULL default '0',
`fname` varchar(35) collate latin1_general_ci NOT NULL,
`team` varchar(12) collate latin1_general_ci NOT NULL,
`status` int(1) NOT NULL default '0',
`roster` int(1) NOT NULL default '0',
`matches_played_mark` int(1) NOT NULL default '0',
`mark_fc` decimal(4,2) NOT NULL default '0.00',
`mininf25` decimal(4,2) NOT NULL default '0.00',
`minsup25` decimal(4,2) NOT NULL default '0.00',
`mark_gazzetta` decimal(4,2) NOT NULL default '0.00',
`goal_scored` int(1) NOT NULL default '0',
`goal_against` int(1) NOT NULL default '0',
`goal_win` int(1) NOT NULL default '0',
`goal_draw` int(1) NOT NULL default '0',
`assists` int(1) NOT NULL default '0',
`yellow` int(1) NOT NULL default '0',
`red` int(1) NOT NULL default '0',
`penalty_kick` int(1) NOT NULL default '0',
`penalty_kick_against` int(1) NOT NULL default '0',
`penalty_kick_catch` int(1) NOT NULL default '0',
`penalty_kick_miss` int(1) NOT NULL default '0',
`own_goal` int(1) NOT NULL default '0',
`matches_played` int(1) NOT NULL default '0',
`first_choise_player` int(1) NOT NULL default '0',
`none` int(1) NOT NULL default '0',
`home` int(1) NOT NULL default '0',
`value` decimal(4,2) NOT NULL default '0.00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 AUTO_INCREMENT=22762 ;
lo script php è :
Codice PHP:
$result_stats = mysql_query("SELECT * FROM ".$_CONF['tprefix']."players WHERE roster = '$roster' ");
if(!$result_stats) { echo mysql_errno().": ".mysql_error()."
"; }
$statcount = mysql_numrows($result_stats);
$sc = 0;
$p_array = Array();
while($sc < $statcount) {
$playerid = mysql_result($result_stats,$sc,"idplayer");
$p_array[$playerid][pid] = $playerid;
$p_array[$playerid][fname] = mysql_result($result_stats,$sc,"fname");
$p_array[$playerid][matches_played_mark] = mysql_result($result_stats,$sc,"matches_played_mark");
$p_array[$playerid][team] = mysql_result($result_stats,$sc,"team");
$p_array[$playerid][mark_fc] = mysql_result($result_stats,$sc,"mark_fc");
$p_array[$playerid][mark_gazzetta] = mysql_result($result_stats,$sc,"mark_gazzetta");
$p_array[$playerid][value] = mysql_result($result_stats,$sc,"value");
$p_array[$playerid][goal_scored] = $p_array[$playerid][goal_scored] + mysql_result($result_stats,$sc,"goal_scored");
$p_array[$playerid][goal_against] = $p_array[$playerid][goal_against] + mysql_result($result_stats,$sc,"goal_against");
$p_array[$playerid][goal_win] = $p_array[$playerid][goal_win] + mysql_result($result_stats,$sc,"goal_win");
$p_array[$playerid][goal_draw] = $p_array[$playerid][goal_draw] + mysql_result($result_stats,$sc,"goal_draw");
$p_array[$playerid][assist] = $p_array[$playerid][assists] + mysql_result($result_stats,$sc,"assists");
$p_array[$playerid][yellow] = $p_array[$playerid][yellow] + mysql_result($result_stats,$sc,"yellow");
$p_array[$playerid][red] = $p_array[$playerid][red] + mysql_result($result_stats,$sc,"red");
$p_array[$playerid][penalty_kick] = $p_array[$playerid][penalty_kick] + mysql_result($result_stats,$sc,"penalty_kick");
$p_array[$playerid][penalty_kick_against] = $p_array[$playerid][penalty_kick_against] + mysql_result($result_stats,$sc,"penalty_kick_against");
$p_array[$playerid][penalty_kick_catch] = $p_array[$playerid][penalty_kick_catch] + mysql_result($result_stats,$sc,"penalty_kick_catch");
$p_array[$playerid][penalty_kick_miss] = $p_array[$playerid][penalty_kick_miss] + mysql_result($result_stats,$sc,"penalty_kick_miss");
$p_array[$playerid][own_goal] = $p_array[$playerid][own_goal] + mysql_result($result_stats,$sc,"own_goal");
$p_array[$playerid][matches_played] = $p_array[$playerid][matches_played] + mysql_result($result_stats,$sc,"matches_played");
$p_array[$playerid][first_choise_player] = $p_array[$playerid][first_choise_player] + mysql_result($result_stats,$sc,"first_choise_player");
$sc++;
}
Piccola spiegazione:
La tabella contiene i dati di ogni giocatore per singola giornata (totale 38 giornate) (campioanto 2007 --> 22.759 record ..). Lo script non fa altro che raccogliere le informazione per ogni giocatore e creare una classifica in base al campo che si desidera.
Il problema è che in queta maniera lo script mi và in timeout ... alcuni esempio
portieri : Tempo di esecuzione: 2.20216 secondi
difensori : Maximum execution time of 60
centrocampisti : Maximum execution time of 60 seconds exceeded
attaccanti : Tempo di esecuzione: 8.34646 secondi .
Spero di aver detto tutto .. qualcuno mi puo dare delle idee o consiglio come migliorare la situazione ..
ciao a tutti e GRAZIE