2010-03-23 2 views
1

Est-ce une bonne pratique pour stocker les objets du modèle de domaine dans la session PHP?Stocker le modèle de domaine en session PHP

Ceci permettrait d'éviter d'interroger et de reconstruire chaque objet PHP pour chaque requête PHP.

Y a-t-il une limite de taille?

+1

Qu'en est-il de deux clients modifiant le même objet? Je veux dire, je pense que c'est bon pour la lecture, mais en écrivant, vous devrez prendre en compte la concurrence –

+0

Voir cette question concernant la taille: http://stackoverflow.com/questions/217420/ideal-php-session-size –

+0

@Jhonny: mmmh vous faites un très bon point ... Je devrais trouver une autre solution –

Répondre

2

Si vous utilisez OOP en PHP, vous voulez probablement que ces objets soient reconstruits à chaque requête pour plusieurs raisons. Dans l'ensemble, il n'y aurait pas beaucoup de différence de performance entre stocker, charger et désérialiser les objets de la session, comme vous l'avez suggéré, ou simplement les reconstruire.

Cela dépend beaucoup du type de cours que vous utilisez, bien sûr. Construire une classe n'est généralement pas très problématique en termes de performances, à moins qu'il y ait beaucoup de choses nécessaires pour le faire (requêtes de base de données, etc.)

De plus, cela pourrait rendre votre code moins compréhensible et/ou maintenable aussi.

Et oui, il y a une taille limitée définie par l'utilisation de la mémoire maximale de jeu PHP dans le php.ini

Donc, cette question n'est pas vraiment responsable, sauf si vous savez exactement ce que les classes que vous voulez stocker dans la session sont, ce qu'ils font et comment ils interagissent. Par exemple, si vous aviez une classe qui résume un utilisateur connecté sur votre site, stocker son objet dans la session PHP serait probablement une bonne idée. Dans la plupart des autres cas, cependant, ce ne serait pas le cas.

+0

Dans mon cas, ce serait stocker l'ensemble du modèle. Par exemple, l'utilisateur se connecte, il a accès à son "projet", cela signifierait stocker son projet de travail en cours. Note: le "projet" est un ensemble d'environ 100 objets PHP (c'est pourquoi je ne veux pas le recharger à chaque fois, c'est environ 50 requêtes) –

Questions connexes