/[webpac2]/trunk/lib/WebPAC/Input.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/WebPAC/Input.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1 by dpavlin, Sat Jun 25 20:23:23 2005 UTC revision 10 by dpavlin, Sat Jul 16 20:35:30 2005 UTC
# Line 5  use strict; Line 5  use strict;
5    
6  =head1 NAME  =head1 NAME
7    
8  WebPAC::Input - The great new WebPAC::Input!  WebPAC::Input - core module for input file format
9    
10  =head1 VERSION  =head1 VERSION
11    
# Line 17  our $VERSION = '0.01'; Line 17  our $VERSION = '0.01';
17    
18  =head1 SYNOPSIS  =head1 SYNOPSIS
19    
20  Quick summary of what the module does.  This module will load particular loader module and execute it's functions.
21    
22  Perhaps a little code snippet.  Perhaps a little code snippet.
23    
24      use WebPAC::Input;      use WebPAC::Input;
25    
26      my $foo = WebPAC::Input->new();      my $db = WebPAC::Input->new(
27      ...          format => 'NULL',
28            config => $config,
29            lookup => $lookup_obj,
30            low_mem => 1,
31        );
32    
33        $db->open('/path/to/database');
34        print "database size: ",$db->size,"\n";
35        while (my $row = $db->fetch) {
36            ...
37        }
38        $db->close;
39    
40  =head1 EXPORT  =head1 FUNCTIONS
41    
42  A list of functions that can be exported.  You can delete this section  =head2 new
 if you don't export anything, such as for a purely object-oriented module.  
43    
44  =head1 FUNCTIONS  Create new input database object.
45    
46      my $db = new WebPAC::Input(
47            format => 'NULL'
48            code_page => 'ISO-8859-2',
49            low_mem => 1,
50      );
51    
52  =head2 function1  Optional parametar C<code_page> specify application code page (which will be
53    used internally). This should probably be your terminal encoding, and by
54    default, it C<ISO-8859-2>.
55    
56    Default is not to use C<low_mem> options (see L<MEMORY USAGE> below).
57    
58  =cut  =cut
59    
60  sub function1 {  sub new {
61  }          my $class = shift;
62            my $self = {@_};
63            bless($self, $class);
64    
65  =head2 function2          $self->{'code_page'} ||= 'ISO-8859-2';
66    
67  =cut          my $log = $self->_get_logger;
68    
69            # running with low_mem flag? well, use DBM::Deep then.
70            if ($self->{'low_mem'}) {
71                    $log->info("running with low_mem which impacts performance (<32 Mb memory usage)");
72    
73                    my $db_file = "data.db";
74    
75                    if (-e $db_file) {
76                            unlink $db_file or $log->logdie("can't remove '$db_file' from last run");
77                            $log->debug("removed '$db_file' from last run");
78                    }
79    
80  sub function2 {                  require DBM::Deep;
81    
82                    my $db = new DBM::Deep $db_file;
83    
84                    $log->logdie("DBM::Deep error: $!") unless ($db);
85    
86                    if ($db->error()) {
87                            $log->logdie("can't open '$db_file' under low_mem: ",$db->error());
88                    } else {
89                            $log->debug("using file '$db_file' for DBM::Deep");
90                    }
91    
92                    $self->{'db'} = $db;
93            }
94    
95            $self ? return $self : return undef;
96  }  }
97    
98  =head1 AUTHOR  =head1 MEMORY USAGE
99    
100  Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>  C<low_mem> options is double-edged sword. If enabled, WebPAC
101    will run on memory constraint machines (which doesn't have enough
102    physical RAM to create memory structure for whole source database).
103    
104    If your machine has 512Mb or more of RAM and database is around 10000 records,
105    memory shouldn't be an issue. If you don't have enough physical RAM, you
106    might consider using virtual memory (if your operating system is handling it
107    well, like on FreeBSD or Linux) instead of dropping to L<DBM::Deep> to handle
108    parsed structure of ISIS database (this is what C<low_mem> option does).
109    
110    Hitting swap at end of reading source database is probably o.k. However,
111    hitting swap before 90% will dramatically decrease performance and you will
112    be better off with C<low_mem> and using rest of availble memory for
113    operating system disk cache (Linux is particuallary good about this).
114    However, every access to database record will require disk access, so
115    generation phase will be slower 10-100 times.
116    
117    Parsed structures are essential - you just have option to trade RAM memory
118    (which is fast) for disk space (which is slow). Be sure to have planty of
119    disk space if you are using C<low_mem> and thus L<DBM::Deep>.
120    
121    However, when WebPAC is running on desktop machines (or laptops :-), it's
122    highly undesireable for system to start swapping. Using C<low_mem> option can
123    reduce WecPAC memory usage to around 64Mb for same database with lookup
124    fields and sorted indexes which stay in RAM. Performance will suffer, but
125    memory usage will really be minimal. It might be also more confortable to
126    run WebPAC reniced on those machines.
127    
 =head1 BUGS  
128    
129  Please report any bugs or feature requests to  =head1 AUTHOR
 C<bug-webpac-input@rt.cpan.org>, or through the web interface at  
 L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=WebPAC>.  
 I will be notified, and then you'll automatically be notified of progress on  
 your bug as I make changes.  
130    
131  =head1 ACKNOWLEDGEMENTS  Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>
132    
133  =head1 COPYRIGHT & LICENSE  =head1 COPYRIGHT & LICENSE
134    

Legend:
Removed from v.1  
changed lines
  Added in v.10

  ViewVC Help
Powered by ViewVC 1.1.26