03. oktober 2003 - 14:20Der 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??
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!
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!!
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.
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,
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() ?
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 :-)
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 ;-)
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.