sub compress_logs() { $compress_process_manager = new Parallel::ForkManager(4) ; while( my $filename = $archive_queue->take ) { if ( defined ($filename) ) { my $pid = $compress_process_manager->start and next ; next unless -e $filename; next unless -e $filename . ".sum"; next if -e $filename . ".gz"; $message_queue->put(RUN_LOG, "Recieved $filename For Compression"); $message_queue->put(RUN_LOG, "Begining Compression Of $filename"); $message_queue->put(RUN_LOG, "Reading $filename Into Memory"); my $string = ''; open(FH, "<$filename") or die "Could not open $filename (${OS_ERROR})"; binmode(FH); while() { $string .= ${ARG} }; close(FH); $message_queue->put(RUN_LOG, "Completed Reading $filename Into Memory"); $message_queue->put(RUN_LOG, "Compressing $filename Memory Image"); my $dest = Compress::Zlib::memGzip($string) ; $message_queue->put(RUN_LOG, "Completed Compressing $filename Memory Image"); $message_queue->put(RUN_LOG, "Flushing $filename Memory Image To Disk"); open(FH, ">$filename.gz") or die "Could not open $filename.gz (${OS_ERROR})"; binmode(FH); print FH $dest; close(FH); undef($string); $message_queue->put(RUN_LOG, "Completed Flushing $filename Memory Image To Disk"); $message_queue->put(RUN_LOG, "Removing $filename After Compression"); unlink($filename); $message_queue->put(RUN_LOG, "Completed Removing $filename After Compression"); $message_queue->put(RUN_LOG, "Removing $filename.sum After Compression"); unlink($filename . ".sum"); $message_queue->put(RUN_LOG, "Completed Removing $filename.sum After Compression"); $message_queue->put(RUN_LOG, "Completed Compression Of $filename"); $compress_process_manager->finish ; }; }; };