PHP geeft dmv session_set_save_handler de mogelijkheid om eigen session-handling functies te maken. Veel open-source projecten maken gebruik van deze functie, om functies te definieren die sessie-informatie opslaan in een database in plaats van de het PHP-session bestand.
Nu ik zelf bezig ben met het maken van een user-systeem, vraag ik me af wat het voordeel is van sessie-informatie opslaan in de database. Na lang zoeken ben ik een aantal voordelen tegen gekomen:
Nu ik zelf bezig ben met het maken van een user-systeem, vraag ik me af wat het voordeel is van sessie-informatie opslaan in de database. Na lang zoeken ben ik een aantal voordelen tegen gekomen:
- je kunt tellen hoeveel en welke (ingelogde) mensen online zijn
- het is veiliger
- bij grote sessies of veel simultane sessies is het sneller
- zo kun je volgens mij ook de session.save_path directory doorlopen, de sessiebestanden uitlezen en zo uit die bestanden de namen van de ingelogde gebruikers halen?
- over het tweede punt: wat is er dan precies veiliger vraag ik me af. Het enige wat ik kan bedenken in dat je bij sessies in bestanden het risico loopt dat je ook anderen je sessies kunnen bekijken, wanneer je op een shared hosting account zit
- klopt die snelheid? Met sessies in een database moet je wel voor het destroyen, updaten en openen van elke sessie een connectie openen en een query uitvoeren. Is dat sneller dan via filesystem een fysiek bestand verwijderen, updaten, etc.?
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."