1.MySQL og MySQLi problemer. 2.PHP Sessions set_save_handler()

Tags:    php


Hej udvikler, og
go'aften/nat til jer derude.

2 ting på tapetet for i aften.

1. Problem

Eftersom php.net annocerede for et pænt stykke tid siden at man ville udfase php4, er tiden jo så også kommet til at skifte over til til php5 og i fremtiden php6. PHP5 og ikke mindst MySQL5 er altså relativ "nyt" for mig, i hvertfald de nye ting som er kommed til. Overgangen til PHP5 og MySQl5.x.x er dog ikke uden problemer, kan jeg konstatere...

MySQL har i mange år understøttet "persistent connections", dette er dog, og trist nok, ikke længere mulighed for med MySQLi udvidelse, som er, efter hvad jeg har hørt expertene sige, specielt udviklet til PHP5/MySQL5.

Er der nogen skarpe hoveder som kan komme med nogen gode råd/tip hvordan man opvejer at man nu skal ud og hente et nyt sql link for hvergang man indlæser en webside?

Det færdige website wil komme til at blive hosted hos surftown.dk, så min udviklings platform for PHP5/MySQL5 er lig deres.

2. Problem
Det har været et generelt ønske at php sessions skal kunne gemmes i databasen. Til det har jeg til hensigt at bruge PHPs indbyggede funktion, set_save_handler().

Men jeg får hovedpine. Hvis jeg opretter en db forbindelse med mysql_pconnect() så har jeg ingen problemer med at skrive session data til database. Derimod, hvis jer bruger MySQLi eller mysql_connect() så virker det ikke...????

Tanken har slået mig at at det handler om persistent connection, men hvad fillen går man når man ikke har nogen persistent connection.

Jeg skal for go ordenskyld sige at jeg bruger MySQLi OOP og at connection link bliver tildelt funktioner, oop metoder, m.m via "global" lige i starten af funktioner. set_save_handler() er nemlig sær når det kommer til parameter.

Jeg har for sjov prøvet at lave db connection (MySQLi og mysql_connect()) linket i set_save_handler -funktionen "open" med den hjælper heller ikke noget

grunden til at jeg vil bruge MySQLi er pga. MySQLi understøtter transactioner - og dette skal jeg nemlig bruge. kunne også bruge det "gammeldags" metode( mysql_query("begin"); mysql_query("commit"); mysql_query("rollback"); )
men det virker nu lidt bøvlet når man kan andet - hvis man altså kan det...

Nogen ider?



Indlæg senest redigeret d. 19.02.2008 08:55 af Bruger #11375
4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Lige netop dette sidder jeg også og roder med, og har fået det til at virke med 'Procedural style' med en classe, det skulle virke men jeg er ikke helt færdig med det endnu. Denne stump code kræver en tabel 'test_sessions' med disse kolonner.: SID,UID,Displayname,IP,Resolved_IP,Browser,Viewing,Expires,Data

Fold kodeboks ind/udKode 


Det var classen, så følger index.php til at prøve med.

Fold kodeboks ind/udKode 


Håber du kan bruge det til noget. Jeg har også prøvet med OOP ved at extende mysqli, det kan jeg ikke få til at virke selv den linie med echo "test"; bliver ikke vist så :(



2. Problem
Det har været et generelt ønske at php sessions skal kunne gemmes i databasen. Til det har jeg til hensigt at bruge PHPs indbyggede funktion, set_save_handler()......

Men jeg får hovedpine. Hvis jeg opretter en db forbindelse med mysql_pconnect() så har jeg ingen problemer med at skrive session data til database. Derimod, hvis jer bruger MySQLi eller mysql_connect() så virker det ikke...????

Tanken har slået mig at at det handler om persistent connection, men hvad fillen går man når man ikke har nogen persistent connection.

Jeg skal for go ordenskyld sige at jeg bruger MySQLi OOP og at connection link bliver tildelt funktioner, oop metoder, m.m via "global" lige i starten af funktioner. set_save_handler() er nemlig sær når det kommer til parameter.

Jeg har for sjov prøvet at lave db connection (MySQLi og mysql_connect()) linket i set_save_handler -funktionen "open" med den hjælper heller ikke noget

grunden til at jeg vil bruge MySQLi er pga. MySQLi understøtter transactioner - og dette skal jeg nemlig bruge. kunne også bruge det "gammeldags" metode( mysql_query("begin"); mysql_query("commit"); mysql_query("rollback"); )
men det virker nu lidt bøvlet når man kan andet - hvis man altså kan det...

Nogen ider?




dsadad



yeah







t