tags:

views:

21

answers:

1

I'm creating a web app using PHP and PostgreSQL. Database are too big and some kinds of search takes a lot of time to process.

User can wait into first search, but it sucks when paginates. Can I store the resultset into sessions vars?

It would be great to deal with pagination.

+1  A: 

Yes, of course you can, but with a lot of different resultsets, loading the amount of data on a session_start can become cumbersome. Also, the same search could be done by more then one user, resulting in duplicate (time consuming) retrievals / large sessions (every pageload takes longer) / more storage space.

If the data is safe from alteration enough to store in a session, look at caches like APC or Memcached to store the result with a meaningful key. That way, the load is lifted from the database, and searches can be shared amongst users.

If you have a fixed number of items for pagination, you could even consider storing the different 'pages' with a pre- or postfix in the key, so you don't have to select a subset of the result every time (i.e. store with a key like 'search:foo=bar|1' / 'search:foo=bar|2' etc.)

Wrikken