The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Data::Fallback::Daemon - a daemon for Data::Fallback

DESCRIPTION

Data::Fallback works great at finding data at the fastest place you tell it, but what happens when you keep asking for the same data repeatedly? Well, Data::Fallback::Daemon allow to cache in memory the data, and a simple protocol for retrieving it.

TYPICAL USAGE

Having one database box and n client boxes doesn't scale too hot for n very large. However, one database box and n client boxes each running their own Data::Fallback::Daemon scales well for large n. So, typical usage in my view is to have local daemons running on each client box.

DBI EXAMPLE

  This example requires DBI and DBD::mysql to be installed on the box.

  #!/usr/bin/perl -w

  use strict;
  use Data::Fallback;
  use Data::Fallback::Daemon;

  # first we set up a simple Data::Fallback::Daemon object
  my $self = Data::Fallback::Daemon->new({

    # you can change the port if you like
    port            => '20203',

    # reverse_lookups can take awhile when you aren't connected to the web,
    # so I just turn them off for testing purposees
    reverse_lookups => '',

    # we need to include a Data::Fallback object
    fallback => Data::Fallback->new(),
  });

  # this is just a dumb test server that I can't guarantee will be up
  # generally, db is an array ref of your connection info
  my $db = ["DBI:mysql:database=fallback;host=spack.net;port=7777", "fallback", ""];

  # loaded_list is a hash ref of all the lists you want to have the daemon maintain
  # the hash key state is how the list is referenced
  $self->{fallback}{loaded_list} = {
    state => [
      {
        content       => '/tmp/fallback/state_$primary_key',
        package       => 'ConfFile',
        accept_update => 'group',
      },
      {
        db      => $db,
        content => 'SELECT * FROM state WHERE id = ?',
        package => 'DBI',
      },
    ],
  };

  # all set up, just need to run
  $self->run();

THANKS

Thanks to Paul Seamons for Net::Server and for helping me set up this simple daemon.

AUTHOR

Copyright 2001-2002, Earl J. Cahill. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Address bug reports and comments to: cpan@spack.net.

When sending bug reports, please provide the version of Data::Fallback, the version of Perl, and the name and version of the operating system you are using.