Avatar billede nikolajdu Nybegynder
20. november 2004 - 01:20 Der er 24 kommentarer og
1 løsning

mysql bruger hukommelse.

Jeg sidder og bygge på et shopsystem i php og der ligger omkring 70.000 poster i.

Jeg åbner pænt min connection i starten og lukker den ligeså pænt igen i min footer der er inkluderet på alle sider. Problemet er så at jeg når jeg har arbejdet på systemet i måske et par timer, så bruger mySql over 150Mb hukommelse. Hvorfor? Jeg ved der findes mysql_free_result(), men vil det hjælpe. Eller skal jeg i stedet åbne og lukke min connection flere gange på hver side.

Hvad gør en klog eller en ekspert ;-)
Avatar billede sukos Juniormester
20. november 2004 - 01:43 #1
Jeg er hverken klog eller ekspert, men mysql_free_result() frigør jo query'en fra ram.
Så det vil jo nok være en go' ide at prøve den.
Avatar billede nikolajdu Nybegynder
20. november 2004 - 01:43 #2
skal jeg så bruge den hver eneste gang jeg har kørt en query?
Avatar billede sukos Juniormester
20. november 2004 - 01:45 #3
jahh, når du ikke skal bruge den mere, query'en altså.
Avatar billede nikolajdu Nybegynder
20. november 2004 - 01:51 #4
Der er jo sindsygt mange queries.
Avatar billede sukos Juniormester
20. november 2004 - 01:54 #5
ja, kunne jeg forestille mig!
Men herefter, husker du vel at bruge mysql_free_result() !!!! :O)

Iøvrigt kan PHP jo selv finde ud af at lukke for forbindelsen.
Avatar billede nikolajdu Nybegynder
20. november 2004 - 01:56 #6
Jeg tænkte bare at hvis man lukker en navngivn connection så frigav den også hukommelse, men sårn virker det åbenbart ikke??

Hvad med connections - skal jeg åbne og lukke eller holde den åben og så lukke til sidst?
Avatar billede sukos Juniormester
20. november 2004 - 01:57 #7
Avatar billede sukos Juniormester
20. november 2004 - 01:59 #8
Hvis du konstant bruger mysql, kunne brugen af mysql_pconnect() jo måske være at overveje?
http://dk2.php.net/manual/da/function.mysql-pconnect.php
Avatar billede sukos Juniormester
20. november 2004 - 02:01 #9
Nu har jeg ikke set din kode, men det er måske også værd at gennemse den for "dobbeltkonfekt", evt.?
Avatar billede sukos Juniormester
20. november 2004 - 02:02 #10
ehh, og så er jeg lidt på dybt vand!
altså min reelle viden er meget lille lige her! :O(
Avatar billede nikolajdu Nybegynder
20. november 2004 - 02:15 #11
Hele siden består jo i hovedtræk af udtræk (ihvertilfald shop delen) - vil det være bedre at åbne og lukke flere steder? Hvor meget kan der spares?
Avatar billede Slettet bruger
20. november 2004 - 07:57 #12
Så vidt jeg har forstået (uden selv at teste det, så jeg er også på dybt vand) er oprettelse af forbindelse til databasen noget af det, der tager kræfter. Det er altså bedre at oprette forbindelsen en gang pr side, og genbruge den til alle forespørgsler.

Hvilket OS kører du MySQL på, og hvordan får du hokommelsesforbruget at vide?
Avatar billede hmortensen Nybegynder
20. november 2004 - 08:54 #13
Sikker på du ikke har nogle uheldige/dyre forespørgelser ?
Avatar billede arne_v Ekspert
20. november 2004 - 10:13 #14
Hvilket OS og hvordan måler du memory forbruget ?
Avatar billede Slettet bruger
20. november 2004 - 10:20 #15
Arne: Det synes jeg da, at jeg har spurgt om ;-)
Avatar billede arne_v Ekspert
20. november 2004 - 10:28 #16
Det har du helt ret i ! Sorry.
Avatar billede nikolajdu Nybegynder
20. november 2004 - 12:57 #17
Ok der er interessse for mit spørgsmål ;-)

sandbox - Det er grunden til at jeg kun har åbnet én gang - At det skulle være dyrt.
hmmortensen - Jeg har nogle queries som trækker fra 3 tabeller på én gang, men det skulle da kunne lade sig gøre?

OS er XP sp2 - PHP 4.3.6 - mySql 3.23.49 - versionerne svarer nogenlunde til udbyderens og kan derfor ikke ændres.

Memory tjekkede jeg bare ved at åbne XP's jobliste. Jeg har nu 1.5GB ram og når ikke over 650.000kb i forbrug, men det bekymrer mig at mySql tager 150.000 mod de normal 13-14.000kb.

Selve forbindelsen har jeg liggende i en klasse.

require_once(getBase()."/i/sql.php");
$con = new Database;'

og min footer kalder $con->CloseSql();

    function CloseSql()
    {
        mysql_close($this->sLink);
        print "sql closed ".$this->sLink;
    }
   
og det virker tilsynesladende fint.
Avatar billede sukos Juniormester
20. november 2004 - 19:28 #18
Den ene gang jeg har prøvet "klasser" af, (en meget simpel en!), tog det ca. 3-5 g. så lang tid at hente info.
Evt. det er her ram bruges på en windåze?
Avatar billede sukos Juniormester
20. november 2004 - 19:33 #19
Og "den ene gang" er herfra:

http://www.eksperten.dk/spm/463224
Avatar billede nikolajdu Nybegynder
21. november 2004 - 01:19 #20
det bør jo netop ikke tage længere tid fra en klasse.
Avatar billede nikolajdu Nybegynder
19. december 2004 - 08:14 #21
Smider i ikke et svar drenge - Jeg har ikke rigtigt fået testet det ordenligt igennem, men heller ikke oplevet det så voldsomt igen.
Avatar billede Slettet bruger
19. december 2004 - 09:04 #22
Jeg synes, du skal lade sukos få pointene. Det var jo ikke meget, vi andre hjalp med.
Avatar billede nikolajdu Nybegynder
19. december 2004 - 15:29 #23
Det blir i familien ONKEL!!! ;-)
Avatar billede sukos Juniormester
27. december 2004 - 21:26 #24
Ok da, for nu at beholde det i familien!

B.t.w., hvad med at ha' en webserver stående en måned eller to?
Avatar billede sukos Juniormester
27. december 2004 - 21:26 #25
Nå, shit
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
Computerworld tilbyder specialiserede kurser i database-management

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