2010-07-15 3 views
0

Je crée une application web en utilisant PHP et PostgreSQL. La base de données est trop grande et certains types de recherche prennent beaucoup de temps à traiter.Stocke le jeu de résultats PostgreSQL dans les sessions?

L'utilisateur peut attendre dans la première recherche, mais il suce lorsqu'il pagine. Puis-je stocker le resultset dans des sessions vars?

Ce serait génial de faire face à la pagination.

Répondre

1

Oui, bien sûr, mais avec beaucoup de résultats différents, le chargement de la quantité de données sur un session_start peut devenir fastidieux. En outre, la même recherche peut être effectuée par plus d'un utilisateur, ce qui entraîne des extractions en double (longues)/de grandes sessions (chaque chargement de page prend plus de temps)/plus d'espace de stockage.

Si les données sont suffisamment protégées contre les modifications pour être stockées dans une session, examinez les caches comme APC ou Memcached pour stocker le résultat avec une clé significative. De cette façon, la charge est levée de la base de données et les recherches peuvent être partagées entre les utilisateurs.

Si vous avez un nombre fixe d'éléments pour la pagination, vous pouvez même envisager de stocker les différentes 'pages' avec un préfixe ou un postfixe dans la clé, ainsi vous ne devez pas sélectionner un sous-ensemble du résultat à chaque fois (c'est-à-dire stocker avec une clé comme 'search: foo = bar | 1'/'search: foo = bar | 2' etc.)

Questions connexes