Apache2-Translation

 view release on metacpan or  search on metacpan

lib/Apache2/Translation/DB.pod  view on Meta::CPAN

=head1 NAME

Apache2::Translation::DB - A provider for Apache2::Translation

=head1 SYNOPSIS

  <TranslationProvider DB>
      Database  dbi:mysql:dbname:host
      User      username
      Password  password
      Singleton 1
      Table     tablename
      Key       keycolumn
      Uri       uricolumn
      Block     blockcolumn
      Order     ordercolumn
      Action    actioncolumn
      Cachetbl  cachetablename
      Cachecol  cachecolumn
      Cachesize 1000
  </TranslationProvider>

  or

  $provider=Apache2::Translation::DB->new(Database=>..., ...);

  $provider->start;
  $provider->stop;

=head1 DESCRIPTION

The C<DB> provider implements the C<Apache2::Translation> provider interface
as documented in L<Apache2::Translation::_base>. It provides for all optional
functions. No additional functions are supported.

=head2 B<Parameters>

=over 2

=item B<database DSN>

a string describing a L<DBI> database

=item B<user NAME>

=item B<password PW>

the user and password to use

=item B<table NAME>

names the translation table.

=item B<key NAME>

=item B<uri NAME>

=item B<block NAME>

=item B<order NAME>

=item B<action NAME>

=item B<id NAME>

=item B<notes NAME>

name the columns of the translation table to use. The C<id> and C<notes>
columns are necessary only in combination with the admin interface.
The C<id> column if specified must have a default value on C<INSERT>
generating unique keys, something like C<autoincrement> in MySQL or
C<nextval('sequence')> in PostgreSQL.

=item B<cachetbl NAME>

=item B<cachecol NAME>

name the cache table and its column

=item B<cachesize NUMBER|infinite>

sets the maximum number of cached block lists, default is 1000.

If set to C<infinite> the cache has no limits.

A L<Tie::Cache::LRU> cache is used.

C<Apache2::Translation::DB> caches database entries as lists of blocks.
Each list of blocks consumes one cache entry.

For each request first the following lookup is done:

 SELECT MAX($cachecol) FROM $cachetbl

The resulting value is then compared with the previous read value. If it
has changed, it means the cache is invalid. If not, the cache is valid
and if all information is found in the cache, no further database lookups
are needed.

=item B<singleton BOOLEAN>

Normally, C<Apache2::Translation> tries to connect to the database at
server startup. Then it inspects the database handle to see if
C<Apache::DBI> or C<Apache::DBI::Cache> are loaded. If so, it will
connect and disconnect for each translation phase / request, thus,
put back the connection to the connection pool.

If neither of them is loaded the DB connection is used as a singleton.



( run in 0.931 second using v1.01-cache-2.11-cpan-5837b0d9d2c )