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