CWB-Web
view release on metacpan or search on metacpan
lib/CWB/Web/Cache.pm view on Meta::CPAN
## INTERNAL: $cache->make_dirs;
## ensure that cache directory and subdirectories exist, otherwise create them
sub make_dirs {
my $self = shift;
my $dir = $self->{'dir'};
my $index = $self->{'index'};
my $data = $self->{'data'};
unless (-d $dir) {
CWB::Shell::Cmd("mkdir $dir");
CWB::Shell::Cmd("chmod 777 $dir");
}
unless (-d $index) {
CWB::Shell::Cmd("mkdir $index");
CWB::Shell::Cmd("chmod 777 $index");
}
unless (-d $data) {
CWB::Shell::Cmd("mkdir $data");
CWB::Shell::Cmd("chmod 777 $data");
}
}
## INTERNAL: $cache->sweep_cache;
## check size of cache data directory and delete old files when it exceeds the limit
sub sweep_cache {
my $self = shift;
my $force = shift;
$force = (defined $force and $force eq "-force") ? 1 : 0;
my $index = $self->{'index'};
lib/CWB/Web/Cache.pm view on Meta::CPAN
my %index_file = map {$_ => 1} $self->index_files("$name-");
my $ext = 1;
while (exists $index_file{"$name-$ext"}) {
$ext++;
}
my $unique = "$name-$ext";
my $unique_local = "$localname-$ext";
# now create empty index file to "lock" the unique name from other processes
my $fh = CWB::OpenFile "> $index/$unique";
$fh->close;
CWB::Shell::Cmd("chmod 666 $index/$unique");
# set DataDirectory in CQP session and re-activate base corpus
$cqp->exec("set DataDirectory '$data'");
$cqp->exec("$corpus");
# copy named query to unique name and store it in data directory
$cqp->exec("$unique_local = $name");
$cqp->exec("save $unique");
CWB::Shell::Cmd("chmod 666 $data/$unique");
# re-write index file if caller has passed metadata
if (@_) {
$fh = CWB::OpenFile "> $index/$unique";
while (@_) {
my $line = shift;
chomp $line; # normalize whitespace in metadata (esp. linebreaks)
$line =~ s/\s+/ /g;
print $fh "$line\n";
}
$fh->close;
( run in 0.257 second using v1.01-cache-2.11-cpan-8d75d55dd25 )