Avatar billede claushelth Nybegynder
03. oktober 2003 - 14:20 Der er 9 kommentarer og
1 løsning

lukning af mysql fejler i php

problemet er at jeg ikke kan lukke min db connection 2. gang i mine funktionskald.

jeg har en funktion der åbner en db connection. Funktionen udfører en handling i db og derefter bliver en anden funktion kaldt inde fra den første. Den anden funktion åbner så igen en db connection og udfører dens handling i db. Der efter lukker den anden funktion dens db connection, og returnere til den første funktion som så skal lukke den første db connection.

function funk1()
{
    $dbcon = aabn_forbindelse_vaelgdb("dbnavn");

    //DB behandling

    funk2();

    luk_forbindelse($dbcon);
}

function funk2()
{
    $dbcon2 = aabn_forbindelse_vaelgdb("dbnavn");

    //db behandling   

    luk_forbindelse($dbcon2);
}

Grunden til at funk2() selv varetager sin db connection er fordi den også kan blive kaldt direkte fra brugergræsnefladen.

Jeg har udskrevet dbcon og dbcon2 og deres #id er det samme, hvilket jeg ville mene skulle være forskelligt, da variablen ikke er den samme???

Har overvejet at indsætte åbning og lukning af db i mine includes i top og bund af siden, så der kun åbnes og lukkes en gang pr side. Det vil vel også være mere recource besparende da jeg ellers bruger databasen meget på hver side??
Avatar billede googolplex Novice
03. oktober 2003 - 17:12 #1
Kan du ikke bare lukke forbindelsen før du kalder din anden funktion ?

function funk1()
{
    $dbcon = aabn_forbindelse_vaelgdb("dbnavn");

    //DB behandling

    luk_forbindelse($dbcon);

    funk2();
}

function funk2()
{
    $dbcon2 = aabn_forbindelse_vaelgdb("dbnavn");

    //db behandling   

    luk_forbindelse($dbcon2);
}
Avatar billede claushelth Nybegynder
04. oktober 2003 - 12:12 #2
hmmm jo det ville også virke...men lige nu er strukturen helt ændret i projektet, og alle åbninger og lukninger er flyttet ud så siden kun åbner og lukker en gang...men min strukur kan ikke få dette til at virke...er meget intereseret i at vide hvordan ens connection opfører sig ($dbcon), for som den er oppe i min løsning så er den ligeglad med at jeg bruger en anden variabel i funk2 ($dbcon2)...

jeg er selv ved at læse noget dokumentation, men hvis der er nogle du eller andre har gode råd kan de også bruges!
Avatar billede googolplex Novice
04. oktober 2003 - 15:13 #3
Har du prøvet at bruge mysql_pconnect() ? Ved ikke om det er en løsning at bruge persistent connections, men det er da et forsøg værd.
Avatar billede claushelth Nybegynder
04. oktober 2003 - 15:20 #4
hmm...kender den ikke, men læste lidt om den inde under php.net. Jeg kan se at man ikke kan lukke denne forbindelse. Uden at vide det selv, har jeg hørt/læst her på eksperten at php ikke altid får lukket DB dom default, og det er derfor bedst selv at gøre det...?
Hvis det er korrekt er den funktion vel ikke så god!!
Avatar billede googolplex Novice
04. oktober 2003 - 15:40 #5
Med mysql_pconnect() skal man slet ikke lukke forbindelsen, den kan være åben i ret lang tid. Men det kunne jo være det løste dit problem og hvis ikke det skaber andre problemer...

Jeg ved at Dreamweaver konsekvent benytter mysql_pconnect(), så de kan ikke være helt ubruelige.
Avatar billede claushelth Nybegynder
04. oktober 2003 - 15:47 #6
nej ok, men det vil sige at jeg kan indsætte denne i toppen på hver af mine sider, og kan så bruge denne på alle de kald de forkommer på siden.
Men hvad er lang tid mon? Det er jo væsenligt om lang tid er så god tid at man kan nå at arbajde på basen i nogle sekunder inden den lukker igen, eller om det er flere minutter.
Hvis det er flere minutter er det jo ikke så godt da der bliver åbnet en connection ved hver ny side brugeren vil se. Hvis brugeren/brugerne er meget aktive med opdateringer af sider, vil der blive åbnet rigtig mange forbindelser, og dette vil skabe noget overheat i DB.
Hvad siger du til det?
Synes bare ikke det lyder så godt hvis den er åben i lang tid,
Avatar billede googolplex Novice
04. oktober 2003 - 17:10 #7
Jeg siger ikke noget, det er jo et problem man må tage med i sine overvejelser :( Men kan du ikke smide hele din kode og fortælle hvad der går galt når du bruger mysql_connect() ?
Avatar billede claushelth Nybegynder
04. oktober 2003 - 17:18 #8
hmm det er et helt system som er delt op i Modelkomponent og brugergrænsefladekomponent, så der er ret mange filer der bliver sammensat for bare at få et resultet...det er derfor ret svært at sende noget direkte kode...og æv, jeg lavede det hele om med hensyn til åbning og låkning af DB så denne kun lå et sted som så bliver inkluderet en gang pr side...dette virkede ikke, så nu vil jeg lige have helt styr på hvordan den giver de forskellige #id'er når den åbnes og lukkkes...ellers mange tak :-)
Avatar billede googolplex Novice
04. oktober 2003 - 17:36 #9
Jeg har også mange aabn_forbindelse() og luk_forbindelse() (bruger de samme funktioner), men har aldrig haft nogle problemer.
Avatar billede claushelth Nybegynder
30. december 2003 - 13:27 #10
lukker :-)
Der kom som sådan ikken nogen lækker løsning, men vi åbner databasen en gang for hver gang der bliver hentet en side, og denne forbindelse lukker vi aldrig igen...så vi håber mysql opfører sig ordenlig ;-)
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