ich hab hier neulich irgendwie was vom angebot über conjobs gelesen ,gesehen...nur wo?
anbei ein kleines script das tages logdatein klein macht (oder x-beliebige txt datein in einem verzeichniss) und die grossen logdatein dann vom server löscht!
spart ca 200% speicher.... brauchte ich gerade! läuft auch auf puretec servern mit 10sec timeout, sollte man aber max 3 datein pro aufruf komprimieren....
PHP-Code:
<?
<?
// ===============================================================
// === flobee´s logfile Compressor == //
// === by flobee for Universal-Artists.de == //
// ===
// === License: GPL == //
// === This program is free software. You can redistribute it and/or modify == //
// === it under the terms of the GNU General Public License as published by == //
// === the Free Software Foundation; either version 2 of the License. == //
//================================================================
Header( "Content-Type: text/plain");
// === Settings ============================================= //
// === path, relativ
$path = 'logs'; // => './' or 'logs' , no slash at least (however)
// === file extention of file to be compressed
$extention = 'log'; // like: debug.log , debug.txt files
// === delete the compressed file eg.: debug.log ? bool: true/false
$deletelog = true;
// the current, daily file which needs to be stored new logs
$skipfilename = 'dailylog'. date("Ymd");
// ============================================================================= //
$handle=opendir($path);
$folderlist = array();
while ($file = readdir($handle)) {
$needle ="/^.+/i";
if( !preg_match($needle,$file) && (substr("$file",-3) == $extention) )
{
$filename = substr("$file",0,-4);
echo "running on file: $file , filename: $filenamen";
if($filename != $skipfilename) {
$success = compress($path, $filename, $extention);
if($success == "DONE") {
echo "...okn";
} else {
echo "Error: $success";
}
} else {
echo "nn$skipfilename has been skipednn";
}
flush();
}
}
closedir($handle);
function compress($path, $filename,$extention) {
global $deletelog;
$fp = @fopen( $path .'/'. $filename .'.'. $extention , "rb");
if (file_exists( $path .'/'. $filename .'.gz')) {
return "exists..n";
die();
// delete existing gz file if found
// unlink( $path .'/'. $filename .'.gz');
}
$zip = @gzopen( $path .'/'. $filename .'.gz', 'wb9');
if(!$fp) {
return "ERROR: No file found to compress: $path / $filename . $extentionn";
die();
}
if(!$zip) {
return "Can´t create gz filen";
die();
}
while(!feof($fp)){
$data=fgets($fp, 8192); // buffer
gzwrite($zip,$data);
}
fclose($fp);
gzclose($zip);
if($deletelog) {
unlink($path .'/'. $filename .'.'. $extention);
}
return "DONE";
}
?>