用PHP生成自己的LOG文件

  • A+
所属分类:PHP编程

如果你的服务器不容许你读他的LOG文件,那你只好停下来分析你的访问者?做你自己的LOG文件吧!

你仅需做的事情是用PHP计算实际的点击次数,没有错误,没有象'304 Not Modified' 和 'Internal Server Error' 一样的错误。你的代码将生成自己的LOG文件。

  1. <?php
  2. /* 用户定义变量 */
  3. $logfile = "clf.log"/*LOG文件写到那里 */
  4. $timezone = "+0100"/* Timezone correction */
  5. $lookup_size = true/* 设置文件的权限 */
  6. $document_root = "/usr/local/apache/share/htdocs";
  7. /* 他可能或不可能对相同的客户端记数
  8. * 一定要对$document_root 这个变量进行设置才可以工作
  9. */
  10. function write_to_log($str) {
  11. if($fd = @fopen($GLOBALS[ "logfile"], "a")) {
  12. fputs($fd, $str);
  13. fclose($fd);
  14. }
  15. }
  16. function get_var($name,$default) {
  17. if($var = getenv($name)) {
  18. return $var;
  19. else {
  20. return $default;
  21. }
  22. }
  23. if($remote_host = get_var( "REMOTE_HOST"false)) {
  24. $remote_host = get_var( "REMOTE_ADDR""-");
  25. }
  26. $remote_user = get_var( "REMOTE_USER""-");
  27. $remote_ident = get_var( "REMOTE_IDENT""-");
  28. $server_port = get_var( "SERVER_PORT"80);
  29. if($server_port!=80) {
  30. $server_port = ":" . $server_port;
  31. else {
  32. $server_port = "";
  33. }
  34. $server_name = get_var( "SERVER_NAME""-");
  35. $request_method = get_var( "REQUEST_METHOD""GET");
  36. $request_uri = get_var( "REQUEST_URI""");
  37. $user_agent = get_var( "HTTP_USER_AGENT""");
  38. if($lookup_size == true && $document_root) {
  39. $filename = ereg_replace( "\?.*""", $request_uri);
  40. $filename = "$document_root$filename";
  41. if(!$size = filesize($filename)) {
  42. $size = 0;
  43. }
  44. else {
  45. $size = 0;
  46. }
  47. $date = gmdate( "d/M/Y:H:I:s");
  48. $log = "$remote_host $remote_ident $remote_user [$date $timezone] \"".
  49. "$request_method http://$server_name$server_port$request_uri\" 200 $size\n";
  50. write_to_log($log);
  51. ?>