[PHP versus ASP] Classes behouden in een sessie.

Pagina: 1
Acties:
  • 127 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 08-07 15:19

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Na veel lezen en overleg ben ik tot het volgende standpunt gekomen en ik wil graag weten of dit klopt.

Als je in PHP(4) een classe definiert (en gebruikt voor zover de functionaliteit dit toestaat) dan heeft dit eigenlijk alleen nog maar nut tijdens dat de pagina wordt geladen. Nadat de pagina naar een client is gestuurd worden alle variabelen en classes weggegooid. Deze kan je niet bewaren.

In ASP blijven klasses en variabele behouden totdat een sessie wordt beeindigd of deze een timeout bereikt. Als er dus door een client op een knop wordt gedrukt dan kunnen de classes en de variabelen weer gebruikt worden.

Klopt dit? En hoe zit het in PHP5? (Met de Zend2 engine) Daarin zitten wel zaken als nested classes, private members enz.... dus kan je eindelijk goed o-o programmeren maar worden de classes ook onthouden tussen page requests van dezelfde client?

Bedankt!

Acties:
  • 0 Henk 'm!

Verwijderd

Over het PHP gedeelte heb je gelijk; met ASP heb ik zelf geen ervaring, dus dat weet ik niet.

En het is net daarom dat mij het principe van OO in PHP ontgaat: je gooit wat data in classes, je output ze naar het scherm, en je bent ze daarna kwijt. Dus waarom zou je alles in classes gaan gooien?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Zit je in ASP nu session vars te beschrijven? Die heeft PHP afaik ook.
Klopt dit? En hoe zit het in PHP5? (Met de Zend2 engine) Daarin zitten wel zaken als nested classes, private members enz.... dus kan je eindelijk goed o-o programmeren maar worden de classes ook onthouden tussen page requests van dezelfde client?
Als je ze opslaat in een bepaalde context (pagina, session, etc.), dan wel, anders lijkt het me niet.

Maar waarom trek je, als je PHP5 in je vergelijking betrekt, ASP.Net niet er bij?

[ Voor 82% gewijzigd door gorgi_19 op 12-01-2004 15:41 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:45
Het lijkt me toch dat je in ASP ook gewoon die var's kwijt bent, eens de pagina in de browser verschijnt (cq geladen is).
Je programmeert nl. met een stateless protocol.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

In PHP kun je variabelen en object van klassen ook bewaren in de sessie data...

Je moet alleen wel ervoor zorgen dat je class definities zijn 'geladen' voordat je de sessies activeert in je script, anders kan de session-handler niets met de objecten aanvangen!

Misschien dat dit in ASP automagisch gebeurt? (Geen ervaring mee met dat ASP)

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Misschien dat dit in ASP automagisch gebeurt? (Geen ervaring mee met dat ASP)
Dat doet het niet :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Wordt het bewaren van objects in sessions veel gedaan eigenlijk? Want op die manier kan je natuurlijk wel mooi (in de zin van: OO) data bijhouden, zonder deze telkens opnieuw te queryen.

Met sessies werk ik zo goed als niet, dus ik heb er bijna geen ervaring mee, maar volgens mij is het opslaan van objecten in sessies niet zo efficiënt? Het is mooi voor een handvol variabelen, maar voor grote objecten lijkt het mij èn niet de bedoeling èn niet zo slim?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op 12 januari 2004 @ 17:12:
Wordt het bewaren van objects in sessions veel gedaan eigenlijk? Want op die manier kan je natuurlijk wel mooi (in de zin van: OO) data bijhouden, zonder deze telkens opnieuw te queryen.

Met sessies werk ik zo goed als niet, dus ik heb er bijna geen ervaring mee, maar volgens mij is het opslaan van objecten in sessies niet zo efficiënt? Het is mooi voor een handvol variabelen, maar voor grote objecten lijkt het mij èn niet de bedoeling èn niet zo slim?
Of je nu 20 losse vars of 2 objecten met elk 10 properties opslaat maakt natuurlijk weinig uit ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Fuzz10
  • Registratie: Oktober 2003
  • Niet online
Janoz schreef op 12 januari 2004 @ 18:19:
[...]


Of je nu 20 losse vars of 2 objecten met elk 10 properties opslaat maakt natuurlijk weinig uit ;)
True true , al heeft PHP4 een behoorlijke aso overhead als je veel classes gebruikt.....
* Fuzz10 wacht met smart op de release van php5....

Acties:
  • 0 Henk 'm!

  • Cavalera125
  • Registratie: December 2003
  • Laatst online: 11:15
Verwijderd schreef op 12 januari 2004 @ 17:12:
Wordt het bewaren van objects in sessions veel gedaan eigenlijk? Want op die manier kan je natuurlijk wel mooi (in de zin van: OO) data bijhouden, zonder deze telkens opnieuw te queryen.
Ik heb dit eigenlijk alleen gebruikt om een winkelwagen object in op te slaten van een webshop. Werkt erg makkelijk op die manier. Owh en ik heb het ook nog gebruikt om een menu van een site in op te slaan. Menustructuur uit de database in menu object. Zo hoef je voor het menu maar 1 query uit te voeren.

Acties:
  • 0 Henk 'm!

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 09:08

Basszje

Reisvaap!]

Cavalera schreef op 13 januari 2004 @ 14:40:
[...]

Ik heb dit eigenlijk alleen gebruikt om een winkelwagen object in op te slaten van een webshop. Werkt erg makkelijk op die manier. Owh en ik heb het ook nog gebruikt om een menu van een site in op te slaan. Menustructuur uit de database in menu object. Zo hoef je voor het menu maar 1 query uit te voeren.
Je kan het beste niet hele objecten in sessies opslaan. Zeker niet als je veel clients tegelijkertijd ( klanten ) moet serveren. Het beste wat je bij beide talen kan doen is een sessie id, eventueel met overige handige Id's ( klantId etc ) opslaan in de sessie en dan elke pagina waar je deze dingen nodig hebt de data ergens vandaan trekken ( database ) en daarmee dat winkelwagen object vullen. Dat is bijna altijd een stuk effectiever.

Als je de wagen niet de hele tijd wil reloaden kan je bv van frames gebruik maken of de 'winkelwagen' HTML ergens cachen, maar dat lijkt mij ook nogal een gedoe als het allemaal niet al te zwaar is.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Acties:
  • 0 Henk 'm!

Verwijderd

Basszje schreef op 13 januari 2004 @ 14:43:
[...]
Je kan het beste niet hele objecten in sessies opslaan. Zeker niet als je veel clients tegelijkertijd ( klanten ) moet serveren. Het beste wat je bij beide talen kan doen is een sessie id, eventueel met overige handige Id's ( klantId etc ) opslaan in de sessie en dan elke pagina waar je deze dingen nodig hebt de data ergens vandaan trekken ( database ) en daarmee dat winkelwagen object vullen. Dat is bijna altijd een stuk effectiever.
De data wordt aan de server-zijde opgeslagen. In PHP is er meestal de standaard session-handler actief die e.e.a. in bestanden opslaat.
Je kunt echter vrij simpel een handler schrijven die een database voor de sessiedata gebruikt.
Het opslaan van objecten in sessiedata bespaart je in ieder geval het initialiseren van de objecten!

Acties:
  • 0 Henk 'm!

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 09:08

Basszje

Reisvaap!]

Verwijderd schreef op 14 januari 2004 @ 14:15:
[...]


De data wordt aan de server-zijde opgeslagen. In PHP is er meestal de standaard session-handler actief die e.e.a. in bestanden opslaat.
Je kunt echter vrij simpel een handler schrijven die een database voor de sessiedata gebruikt.
Het opslaan van objecten in sessiedata bespaart je in ieder geval het initialiseren van de objecten!
Wat bedoel je precies met een database voor de sessiedata gebruiken? Je bedoelt, wat ik er van begrijp, dat je wat je normaal in een sessie zou plempen je nu serialiseert en in een database knalt? Dat is toch wat je bedoelt?

Dat scheelt je inderdaad wel wat initalisatie, maar het is maar de vraag of dit soort dingen dermate lang duren dat die moeite rechtvaardigd. Je zal echt amper het verschil merken tussen wel of niet initialiseren van objecten ( afhankelijk van wat er gebeurt natuurlijk). Dus alleen als die tijd een heet hangijzer word zou ik zoiets aanraden :)

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Basszje schreef op 14 januari 2004 @ 14:32:
[...]


Wat bedoel je precies met een database voor de sessiedata gebruiken? Je bedoelt, wat ik er van begrijp, dat je wat je normaal in een sessie zou plempen je nu serialiseert en in een database knalt? Dat is toch wat je bedoelt?
Je kan anders erg leuke problemen krijgen als je geen aparte state server gebruikt en op een webfarm opereert. Dan wordt sessiedata al vrij snel onbetrouwbaar.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Basszje schreef op 14 januari 2004 @ 14:32:
Wat bedoel je precies met een database voor de sessiedata gebruiken?
Gewoon, precies wat ik schreef: een session handler schrijven die de session data in een database opslaat.
Op php.net, bij zend en elders op het web vind je een massa voorbeelden van eigen session handlers in PHP. Daarmee kun je alle opslagfunctionaliteit van sessions zelf afhandelen.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:45
gorgi_19 schreef op 14 januari 2004 @ 14:59:
[...]

Je kan anders erg leuke problemen krijgen als je geen aparte state server gebruikt en op een webfarm opereert. Dan wordt sessiedata al vrij snel onbetrouwbaar.
Kan je dat makkelijk doen met de 'klassieke' ASP?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

gorgi_19 schreef op 14 januari 2004 @ 14:59:
Je kan anders erg leuke problemen krijgen als je geen aparte state server gebruikt en op een webfarm opereert. Dan wordt sessiedata al vrij snel onbetrouwbaar.
Dus die database op een (1) server zetten die door de overige servers wordt geraadpleegd.
Inderdaad heb je kans als je IP based load balancing gebruikt dat sommige bezoekers automatisch gaan server-"hoppen". Door de sessions centraal op te slaan is het probleem opgelost.
Overigens is de standaard session handler in zo'n geval ook totaal hulpeloos, want de sessiondata is in zo'n situatie ook niet door een andere server te raadplegen. Er zijn wel oplossingen hiervoor (daemon op een server die session data beheert ofzo), maar dat is een variant op opslaan in een centrale db server.
Pagina: 1