Fråga
Jag har en fundering angående min privata hemsida som jag skapat. Det ligger en mysql databas i botten och jag kör php sidor och inkluderar en phpsida med alla funktioner.
Det jag har gjort nu är att i många funktioner kopplar jag upp mot databasen och hämta/ändra/ lägg till data och sedan stänger jag kopplingen. Det jag undrar är om det här är rätt, eller skall man ha en slags gemensam koppling mot databasen som ligger öppen och kan användas av alla funktioner?
Svar
Hej Anders…
Här kommer en idé på hur du kan bygga upp din applikation.
Modifiera din struktur så att den överensstämmer med Model-View-Controller konceptet, se http://en.wikipedia.org/wiki/Model-view-controller. Detta koncept är enklare att följa om du använder klasser i din kod.
Sedan för varje modell-klass skriver du en metod/funktion som du anropar när du modifierat klart innehållet i objektet, denna metod skall då implementera SQL-anrop som sparar objektets innehåll i sql-databasen.
Låt nu säga att du har en funktion på din hemsida där du får fram komponenter för att ändra en bild och text till bilden, samt en kryssruta för att göra detta synligt. I bakgrunden görs följande när användaren trycker på en knapp för att spara,
- Öppna kommunikationen gentemot MySQL
- Ändra värdet i modellen som representerar bilden.
- Ändra värdet i modellen som representerar texten.
- Ändra värdet i modellen som representerar kryssrutan.
- Skriv till SQL genom att anropa metoden i modellen som representerar bilden.
- Skriv till SQL genom att anropa metoden i modellen som representerar texten.
- Skriv till SQL genom att anropa metoden i modellen som representerar kryssrutan.
- Stäng kommunikationen till SQL.
När vi ändå är igång kan vi ge en varning åt ’persistent database connection’, vilket man bör undvika så länge man inte har några uppenbara prestandaproblem. Vad är då ’persistent database connection’ och varför skall jag undvika det, den informationen finner du under följande länk: http://se2.php.net/manual/en/features.persistent-connections.php.
Lycka till…