phpbar.de logo

Mailinglisten-Archive

[php] Apache acess_log verarbeiten

[php] Apache acess_log verarbeiten

Oliver Schlag php_(at)_phpcenter.de
Tue, 7 Aug 2001 07:08:32 +0100


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