09. november 2007 - 17:10Der er
5 kommentarer og 1 løsning
Meget meget lang while
Hej Eksperter.
Jeg prøver at forudse noget af min kode, men er ikke altid så nemt, derfor fo jeg lige brug for jeres ekspertise :)
Først noget kode. $q = mysql_query("SELECT * FROM tabelnavn"); while($r = mysql_fetch_array($q)){ // Masse variabler og en eller to UPDATE query(s) }
Hvis nu den her kode kører igennem 50.000 gange vær time via. et cronjob ville der blive sendt 50.000 -> 100.000 query's vær time. Det lyder af ret meget?
Mit spørgsmål til jer er: Er der en måde at gøre det her på?
hvis du har et felt som er unikt, ( typisk "id" primary autoincrement ) kan du nøjes med at hente id, og smide dem i et array, og så bruge WHERE id IN (". implode(",", $id_array) .") for at køre en update query, i stedet for en query for hvert id
Men ellers, hent kun de felter du ved er nødvendig, i stedet for blot at bruge *
$money_q = mysql_query("SELECT money FROM brugere WHERE ID = '".$r['ejer']."'"); $money_r = mysql_fetch_array($money_q); $new_money = $money_r['money']+$hour_inc; mysql_query("UPDATE kasinos SET income = '".$new_income."' WHERE ID = '".$r['ID']."'");
mysql_query("UPDATE brugere SET money = '".$new_money."' WHERE ID = '".$r['ejer']."'"); }
bavingo, kan ikke se hvor du vil hen med det. Det er jo præcis det samme som jeg gør, du folænger bare pocessen så den vil tage endnu længere tid at udføre. Husk nu, den der while skal køres igennem 50.000 gange i timen, tvivler på den når at blive færdig til næste time hvis jeg gør sådan. :P
Showsource, mangler jo bare noget at kunne sammenkøre med så. ;)
Vil prøve at læse lidt mere i MySQL 5.0 manualen, håber arne_v kigger forbi. :P
Nåeh, jeg må vel hellere lukke og oprette en ny under MySQL så.
Synes godt om
Ny brugerNybegynder
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.