Alzabo::Runtime::UniqueRowCache.3pm

Langue: en

Autres versions - même langue

Version: 2008-06-10 (ubuntu - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

Alzabo::Runtime::UniqueRowCache - Implements a row cache for Alzabo

SYNOPSIS

   use Alzabo::Runtime::UniqueRowCache;
 
   Alzabo::Runtime::UniqueRowCache->clear();
 
 

DESCRIPTION

This is a very simple caching mechanism for "Alzabo::Runtime::Row" objects that tries to ensure that for there is never more than one row object in memory for a given database row.

To use it, simply load it.

It can be foiled through the use of "Storable" or other ``deep magic'' cloning code, like in the "Clone" module.

The cache is a simple hash kept in memory. If you use this module, you are responsible for clearing the cache as needed. The only time it is cleared automatically is when a table update or delete is performed, in which case all cached rows for that table are cleared.

In a persistent environment like mod_perl, you should clear the cache on a regular basis in order to prevent the cache from getting out of sync with the database. A good way to do this is to clear it at the start of every request.

METHODS

All methods provided are class methods.
clear

This clears the entire cache

clear_table( $table_object )

Given a table object, this method clears all the cached rows from that table.

row_in_cache( $table_name, $row_id )

Given a table name and a row id, as returned by the "Alzabo::Runtime::Row->id_as_string" method, this method returns the matching row from the cache, if it exists. Otherwise it returns undef.

delete_from_cache( $table_name, $row_id )

Given a table name and a row id, as returned by the "Alzabo::Runtime::Row->id_as_string" method, this method returns the matching row from the cache.

write_to_cache( $row_object )

Given a row object, this method stores it in the cache.

AVOIDING THE CACHE

If you want to not cache a row, then you can pass the ``no_cache'' parameter to any table or schema method that creates a new row object or a cursor, such as "Alzabo::Runtime::Table->insert()", "Alzabo::Runtime::Table->rows_where()".

AUTHOR

Dave Rolsky, <autarch@urth.org>