[otrs-cvs] otrs/Kernel/System XML.pm,1.48,1.49
cvs-log at otrs.org
cvs-log at otrs.org
Mon Apr 2 07:39:04 GMT 2007
Comments:
Update of /home/cvs/otrs/Kernel/System
In directory lancelot:/tmp/cvs-serv29338/Kernel/System
Modified Files:
XML.pm
Log Message:
Added file system cache machanism.
Author: martin
Index: XML.pm
===================================================================
RCS file: /home/cvs/otrs/Kernel/System/XML.pm,v
retrieving revision 1.48
retrieving revision 1.49
diff -C2 -d -r1.48 -r1.49
*** XML.pm 1 Apr 2007 13:13:55 -0000 1.48
--- XML.pm 2 Apr 2007 07:38:59 -0000 1.49
***************
*** 14,17 ****
--- 14,18 ----
use strict;
use Kernel::System::Encode;
+ use Data::Dumper;
use vars qw($VERSION $S);
***************
*** 78,81 ****
--- 79,87 ----
$Self->{EncodeObject} = Kernel::System::Encode->new(%Param);
+ # mild pretty print
+ $Data::Dumper::Indent = 1;
+ # cache directory
+ $Self->{CacheDirectory} = $Self->{ConfigObject}->Get('Home')."/var/tmp/";
+
$S = $Self;
***************
*** 126,131 ****
}
}
! my $Key = $Param{Key};
# db quote
foreach (keys %Param) {
$Param{$_} = $Self->{DBObject}->Quote($Param{$_});
--- 132,150 ----
}
}
! # write cache file
! my $FileCache = quotemeta("$Param{Type}-$Param{Key}");
! $FileCache = $Self->{CacheDirectory}."xml-storage-$FileCache.cache";
! my $Dump = Data::Dumper::Dumper($Param{XMLHash});
! $Dump =~ s/\$VAR1/\$XMLHashRef/;
! if (open (OUT, "> $FileCache")) {
! binmode(OUT);
! print OUT $Dump."\n1;";
! close (OUT);
! }
! else {
! $Self->{LogObject}->Log(Priority => 'error', Message => "Can't write cache file $FileCache: $!");
! }
# db quote
+ my $Key = $Param{Key};
foreach (keys %Param) {
$Param{$_} = $Self->{DBObject}->Quote($Param{$_});
***************
*** 215,218 ****
--- 234,250 ----
my %ValueHASH = $Self->XMLHash2D(XMLHash => $Param{XMLHash});
if (%ValueHASH) {
+ # write cache file
+ my $FileCache = quotemeta("$Param{Type}-$Param{Key}");
+ $FileCache = $Self->{CacheDirectory}."xml-storage-$FileCache.cache";
+ my $Dump = Data::Dumper::Dumper($Param{XMLHash});
+ $Dump =~ s/\$VAR1/\$XMLHashRef/;
+ if (open (OUT, "> $FileCache")) {
+ binmode(OUT);
+ print OUT $Dump."\n1;";
+ close (OUT);
+ }
+ else {
+ $Self->{LogObject}->Log(Priority => 'error', Message => "Can't write cache file $FileCache: $!");
+ }
# db quote
foreach (keys %Param) {
***************
*** 246,249 ****
--- 278,287 ----
);
+ my @XMLHash = $XMLObject->XMLHashGet(
+ Type => 'SomeType',
+ Key => '123',
+ Cache => 0, # do not use the file system cache
+ );
+
=cut
***************
*** 260,263 ****
--- 298,326 ----
}
}
+ if (!defined($Param{Cache})) {
+ $Param{Cache} = 1;
+ }
+ # read cache file
+ my $FileCache = quotemeta("$Param{Type}-$Param{Key}");
+ $FileCache = $Self->{CacheDirectory}."xml-storage-$FileCache.cache";
+ if (-e $FileCache && !$Param{Cache}) {
+ if (open (IN, "< $FileCache")) {
+ my $XMLHashRef;
+ my $Content = '';
+ while (<IN>) {
+ $Content .= $_;
+ }
+ close (IN);
+ if ($Content && !eval $Content) {
+ print STDERR "ERROR: $FileCache: $@\n";
+ }
+ @XMLHash = @{$XMLHashRef};
+ return @XMLHash;
+ }
+ else {
+ $Self->{LogObject}->Log(Priority => 'error', Message => "Can't read cache file $FileCache: $!");
+ return;
+ }
+ }
# db quote
foreach (keys %Param) {
***************
*** 310,313 ****
--- 373,384 ----
}
}
+ # remove cache file
+ my $FileCache = quotemeta("$Param{Type}-$Param{Key}");
+ $FileCache = $Self->{CacheDirectory}."xml-storage-$FileCache.cache";
+ if (-e $FileCache) {
+ if (!unlink $FileCache) {
+ $Self->{LogObject}->Log(Priority => 'error', Message => "Can't remove $FileCache: $!");
+ }
+ }
# db quote
foreach (keys %Param) {
***************
*** 342,345 ****
--- 413,429 ----
}
}
+ # rename cache file
+ my $FileCacheOld = quotemeta("$Param{OldType}-$Param{OldKey}");
+ my $FileCacheNew = quotemeta("$Param{NewType}-$Param{NewKey}");
+ $FileCacheOld = $Self->{CacheDirectory}."xml-storage-$FileCacheOld.cache";
+ $FileCacheNew = $Self->{CacheDirectory}."xml-storage-$FileCacheNew.cache";
+ if (-e $FileCacheOld) {
+ if (!rename($FileCacheOld, $FileCacheNew)) {
+ $Self->{LogObject}->Log(
+ Priority => 'error',
+ Message => "Can't rename $FileCacheOld to $FileCacheNew: $!",
+ );
+ }
+ }
# db quote
foreach (qw(OldType OldKey NewType NewKey)) {
More information about the cvs-log
mailing list