Avatar billede sorensen_123 Nybegynder
26. december 2008 - 00:00 Der er 3 kommentarer og
1 løsning

Mange rækker - Hvad gør jeg?

Hej

Jeg står overfor at skulle launche en ny kæmpeportal, hvori der skal være et cronjob der kører 5 gange om dagen.

Det cronjob tjekker nogle ting på hver række i en database, og derfor vælger jeg at det skal køre 5 gange om dagen, for at fordele tjekket over flere gange (så i stedet for at tage 500 rækker på en gang, tager den 100 rækker 5 gange om dagen).

Til det skal jeg fortælle mit cronjob at den kun skal tage de rækker på det tidspunkt, og nogle andre rækker på et andet tidspunkt.

Jeg har derfor tænkt mig at give hver række et unikt ID, hvor det første cronjob tjekker ID 1, det næste ID 2 osv. osv.

Ved dog ikke om det ville være det mest hensigtsmæssige - hvad synes i? Er der andre måder at gøre på?

Ville en yderligere optimering være at fordele rækkerne ud på forskellige databaser? Eller er det overkill?
Avatar billede cronaldo Nybegynder
26. december 2008 - 01:23 #1
Hmm .. kunne du ikke lave en:

$foresp = //Lav mysql query;
$num_rows = mysql_num_rows($foresp);
$num_rows_div_5 = $num_rows / 5;

og så kunne du sørge for at lade den tjekke de første rækker, der IKKE var sat editedtoday="yes" på.. og dermed bruge "$num_rows_div_5"; som limit.. altså vil den nye MYSQL query blive noget ala:

mysql_query("SELECT felt, editedtoday FROM tabel WHERE editedtoday != "yes" ORDER BY id DESC LIMIT ".$num_rows_div_5.")
while($data = mysql_fetch_array($foresp)){


    mysql_query("UPDATE tabel SET editedtoday = 'yes' WHERE id = '".$data[id]."' LIMIT 1") or die(mysql_error());

}


Det skulle da virke - medmindre der kan ske at blive tilføjet nye forekomster i løbet af dagen? så skal du måske tilføje noget der tjekker om datoen < i dag .. og hvis den ikk er skal der ikke ændres?
Avatar billede hmortensen Nybegynder
26. december 2008 - 02:22 #2
Hvis det kun er 500 poster, burde det ikke være noget problem.
Hvad skal der gøres ved posterne?
Avatar billede sorensen_123 Nybegynder
26. december 2008 - 12:03 #3
Regner med 500 poster efter en uge. Så det var bare et eksempel. Kan hurtigt komme op på 100-500k poster.

Min server burde kunne trække det databasemæssige (en dedikeret server med 2x 3,2 quadcore intel xeon, 16 GB ram, 4x250 10.000 RPM harddiske), tænker bare på belastningen (og time-out) hvis der skulle scannes for 200.000 poster på en gang.
Avatar billede sorensen_123 Nybegynder
15. marts 2009 - 18:11 #4
Nå, jeg lukker. Tak for svarene.
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

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