Avatar billede hypofysen Nybegynder
04. marts 2010 - 19:59 Der er 4 kommentarer og
1 løsning

kan ikke opdatatere min database!

Jeg har problemer med at opdatere min database, hvis det er formange rækker på en gang!

hvis jeg kører min kode med et maks på foreksempel 10 rækker fungerer det fint, men hvis det er 1000 rækker sker der intet.

Er der en form for timeout i mysql når man opdatere?
Avatar billede majbom Novice
04. marts 2010 - 21:03 #1
det kunne godt være noget timeout, med så mange rækker...

hvordan ser din kode ud?
Avatar billede repox Seniormester
04. marts 2010 - 21:59 #2
Som nummer 1 siger, kunne man nemt forestille sig dit script timer ud.
Kig evt. på http://php.net/set_time_limit
Alternativt kan det være et hukommelsesproblem - men der skal nok kode til for at vi komme med et kvalificeret bud.
Avatar billede showsource Seniormester
05. marts 2010 - 04:44 #3
Det kan også være manglende index på relevante felter i din tabel.
Avatar billede hypofysen Nybegynder
05. marts 2010 - 18:46 #4
her kommer lidt kode, skriv hvis det ikke er nok!

public function calcWtEvent($tableName,$event)
    {
        $getTimeInfo = new Database;
        $getTimeInfo -> select($tableName,'*, TIMEDIFF(Finishtime_individual,Starttime_official) as officialFinish, TIMEDIFF(Finishtime_individual,Starttime_individual) as officialFinish_net','Event_id = "'.$event.'" AND Start_number < 2000');
       
        $getRaceInfo = new Database;
       
        foreach($getTimeInfo -> result as $timeResult)
        {
            $getRaceInfo -> select('wt_races','*','Event_id = "'.$event.'" AND Race_id = "'.$timeResult['Race_id'].'"');
            $officialFinish = $timeResult['officialFinish'];
            $officialCalcFinish = $timeResult['officialFinish_net'];
   
            $timeInSec = $this -> time_to_sec($officialFinish);
            $timeInSec_net = $this -> time_to_sec($officialCalcFinish);
           
            $secPrKm = ($timeInSec)/$getRaceInfo -> result[0]['Race_distance'];
            $kmPrMin = $this -> secondsToTime($secPrKm);
            $minkm = $kmPrMin;
           
            $secPrKm_net = ($timeInSec_net)/$getRaceInfo -> result[0]['Race_distance'];
            $kmPrMin_net = $this -> secondsToTime($secPrKm_net);
            $minkm_net = $kmPrMin_net;
           
            @$avg_speed = ($getRaceInfo -> result[0]['Race_distance']/$timeInSec) * 3600;
            @$avg_speed_net = ($getRaceInfo -> result[0]['Race_distance']/$timeInSec_net) * 3600;
            $kmt = $avg_speed;
            $kmt_net = $avg_speed_net;
           
                $upd = new Database;
                $insArray = array('Timeofficial_calc' => $officialFinish,'Timeofficial_calc_net' => $officialCalcFinish,'Speed_avg_kmt' => $kmt, 'Speed_avg_kmt_net' => $kmt_net,'Speed_avg_minkm' => $minkm,'Speed_avg_minkm_net' => $minkm_net);
                foreach($insArray as $key => $value)
                {
                    $upd -> update($tableName,$key,$value,'Event_id = "'.$event.'" AND Race_id = "'.$timeResult['Race_id'].'" AND Start_number = "'.$timeResult['Start_number'].'"');
                }
        }
       
    }
   
    public function time_to_sec($time) {
    $hours = substr($time, 0, -6);
    $minutes = substr($time, -5, 2);
    $seconds = substr($time, -2);

    return $hours * 3600 + $minutes * 60 + $seconds;
}
   
    public function secondsToTime($seconds)
    {
        $ret = "";
        $hours = intval(intval($seconds) / 3600);
        if($hours > 0 && $hours < 10)
        {
            $ret .= "0".$hours.":";
        }elseif($hours <= 0)
        {
            $ret .= "00:";   
        }else{
            $ret .= $hours.":";       
        }
        $minutes = bcmod((intval($seconds) / 60),60);
        if($minutes >= 10)
        {
            $ret .= $minutes.":";
        }elseif($minutes < 10 && $minutes >=1)
        {
            $ret .= "0".$minutes.":";
        }else{
            $ret .= "00:";
        }
        $seconds = bcmod(intval($seconds),60);
        if($seconds >= 10)
        {
            $ret .= $seconds;
        }else{
            $ret .= "0".$seconds;
        }
        return $ret;
    }
Avatar billede hypofysen Nybegynder
27. juni 2010 - 10:54 #5
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester