Mailinglisten-Archive |
Hy,
ich habe mal ein kleines PHP Script geschrieben, da ich mir das Logfile spl=
itten lassen wollte und ich wohl zu bl=F6d war das Tool was beim Apachen da=
bei ist richtig zu bedienen.
>Es scheiterte an der puren gr=F6=DFe der Logs. PHP ist f=FCr solche
>Datenmengen nicht geeignet.
Das glaube ich nicht so ganz, ich habe in meinem Script den Timeout abgesch=
altet und das l=E4uft jetzt jeweils um Mitternacht seine 1-2 Minuten und ni=
mmt dabei einiges an Daten auseinander.
Das unten ist wahrscheinlich nicht die beste und sauberste L=F6sung aber si=
e l=E4uft so wie ich es will ;)
Mfg
Olly
<?php
// Split um die Logfiles von Blue Online entsprechend der
// virtual Hosts zu splitten
$fp =3D fopen("/home/sitetools/apache/logs/httpd.pid","r");
$pid =3D fgets($fp,1024);
fclose($fp);
$apache_stop =3D "/bin/kill $pid";
$apache_start =3D '/etc/rc.d/init.d/httpd start';
$input_file =3D '/home/sitetools/apache/logs/access_log';
$input_file_tmp =3D '/home/sitetools/apache/logs/access_log_tmp';
$output_path =3D '/home/sites/';
// Apache Webserver stoppen
exec($apache_stop);
// Logfile kopieren, und altes l=F6schen
copy($input_file,$input_file_tmp);
unlink($input_file);
// Apache Webserver neustarten
exec($apache_start);
$fp =3D fopen($input_file_tmp,"r");
while(!feof($fp))
{
$data =3D fgets($fp,24986);
$new_data =3D explode(" ",$data,2);
$dom_log =3D $output_path.$new_data[0]."/logs/".$new_data[0]."-access_l=
og";
$dl =3D _(at)_fopen ($dom_log,"a");
$putter =3D $new_data[1];
_(at)_fputs($dl,$putter);
_(at)_fclose($dl);
}
fclose($fp);
unlink($input_file_tmp);
?>
php::bar PHP Wiki - Listenarchive