Avatar billede sunstream Nybegynder
31. august 2006 - 15:39 Der er 5 kommentarer

generere hiscores m.m. statisk via et cron job

Hejsa!

Jeg har en meeeget stor highscore i min database (15000+ brugere), og når mange brugere (4-5000) går ind samtidigt, så belaster det servern så sindsygt meget at den krascher.
Jeg har hørt noget om at man skulle kunne "cache" sin highscore, så at man ikke behøver hente den fra databasen hele tiden, og at man kan bruge ett cron job til at updatere den cachede versionen med en tidsinterval...

Er dette rigtigt, og hvad er principet?

Det skal siges, at jeg ikke er nogen php-haj, men jeg vil gærne få fatt på selve principet bag dette.

Hvad kræves det?
Hvordan cacher man sin highscore der ligger i en mySql-database?
Hvordan laver man et cron job?
Kræver det nogen software?

Bare kalde mig noob, det er ok :o)


Meget tacksam för hjälp!


...//Fred
Avatar billede fixxxer Nybegynder
31. august 2006 - 16:34 #1
Highscore til hvad?

Cron jobs har intet med PHP at gøre, det er en feature på Linux/Unix servere (man kan vist få noget der efterligner det til Windows)

Jeg har svært ved at se hvordan nogen skal kunne hjælpe dig, uden at vide lidt mere til dit problem. Kan du evt. give et link til den side du taler om?
Avatar billede sunstream Nybegynder
31. august 2006 - 18:17 #2
Nåeh ok, hehe så er jeg nok i den forkerte afdelning mht cron job og cache :oP

Men lad os droppe cron job og cache og alt vad det heder så...istedet så har jeg faktiskt nogle spm der har med php at gøre :o)

Jeg har min highscore...og det er en highscore til et spil, som gemmer brugernavn (name), point (point) og et unikt id (id) i en mysql database...

Hvad jeg vil, er at med hjælp af brugerens id (id), finde den specifike brugere og dens placering i highscore listen sorteret udfra point...og også det totale antal av poster i listen...

Mit problem er nok også lidt, at det ikke er mig der har lavet denne php (jeg er som sagt ikke nogen haj til det), men jeg skal prøve at finde rundt i det aligvel :oP

jeg har følgende i en .class-fil:

function get_highscore($count, $gametype) {
if ($gametype == 1) {
    $this->query("
        SELECT
            u.username as name,
            u.point,
            u.rank,
            u.user as id,
            u.type
        FROM
            userdata as u
        WHERE
            u.point != 0
        ORDER BY
            point DESC
        LIMIT ".intval($count)."
    ");
}
}

...der count bruges for at ange hvor mange man vil se på HS, og gametype er type af spil man vil se...

jeg kan sagtens finde brugerens id udfra et "get-cookie-system" som findes
...men hvordan gør jeg når jeg vil loope? igennem HS-tabellen for at finde hans/hendes placering, og det totale antal av brugere i tabellen, og så returnere disse to værdier?

Håber jeg gir mening, og undskyld at jeg har skiftet æmne :oP

...//F
Avatar billede fcknet Nybegynder
01. september 2006 - 00:29 #3
Du kan finde brugerens placering ved at gøre sådan her:
SELECT (SELECT COUNT(id) FROM userdata WHERE point > (SELECT point FROM userdata WHERE id=1))+1 AS ranking

Jeg håber du kan bruge det ;)
Avatar billede sunstream Nybegynder
01. september 2006 - 14:56 #4
Okej :o)

Kan du skrive det så at det minder om det stykke kode jeg har ovanför?
SELECT
  SELECT COUNT
    id
  FROM
    userdata
  WHERE
    point > ...eeeeh ? der er jeg tabt :oPP

Jeg er ikke så god til php jo :oP

Og hvordan får jeg "resultatet" tilbage fra classen?

return det_resultat_som_kommer_af_den_der_query_string ??

hilphe
Avatar billede Slettet bruger
01. september 2006 - 20:40 #5
Hvordan kan det være du vil have det skrevet på den måde? Det er jo fint nok som fcknet har skrevet det... I hvert fald hvis jeg har forstået dit problem rigtigt.
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