walkor 11 жил өмнө
parent
commit
a484d8a4e5
1 өөрчлөгдсөн 51 нэмэгдсэн , 1 устгасан
  1. 51 1
      workers/WebServer.php

+ 51 - 1
workers/WebServer.php

@@ -42,6 +42,18 @@ class WebServer extends Man\Core\SocketWorker
     protected static $serverRoot = array();
     
     /**
+     * 默认访问日志目录
+     * @var string
+     */
+    protected static $defaultAccessLog = './logs/access.log';
+    
+    /**
+     * 访问日志存储路径
+     * @var array
+     */
+    protected static $accessLog = array();
+    
+    /**
      * mime类型映射关系
      * @var array
      */
@@ -60,6 +72,8 @@ class WebServer extends Man\Core\SocketWorker
         $this->initMimeTypeMap();
         // 初始化ServerRoot
         $this->initServerRoot();
+        // 初始化访问路径
+        $this->initAccessLog();
     }
     
     /**
@@ -103,6 +117,21 @@ class WebServer extends Man\Core\SocketWorker
     {
         self::$serverRoot = \Man\Core\Lib\Config::get($this->workerName.'.root');
     }
+    
+    /**
+     * 初始化AccessLog
+     * @return void 
+     */
+    public function initAccessLog()
+    {
+        // 虚拟机访问日志目录
+        self::$accessLog = \Man\Core\Lib\Config::get($this->workerName.'.access_log');
+        // 默认访问日志目录
+        if($default_access_log =  \Man\Core\Lib\Config::get($this->workerName.'.default_access_log'))
+        {
+            self::$defaultAccessLog = $default_access_log;
+        }
+    }
 
     /**
      * 确定数据是否接收完整
@@ -121,7 +150,10 @@ class WebServer extends Man\Core\SocketWorker
     {
          // http请求处理开始。解析http协议,生成$_POST $_GET $_COOKIE
         App\Common\Protocols\Http\http_start($recv_str);
-       
+        
+        // 记录访问日志
+        $this->logAccess($recv_str);
+        
         // 请求的文件
         $url_info = parse_url($_SERVER['REQUEST_URI']);
         if(!$url_info)
@@ -267,4 +299,22 @@ class WebServer extends Man\Core\SocketWorker
             return $this->sendToClient(App\Common\Protocols\Http\http_end('<html><head><title>页面不存在</title></head><body><center><h3>页面不存在</h3></center></body></html>'));
         }
     }
+    
+    /**
+     * 记录访问日志
+     * @param unknown_type $recv_str
+     */
+    public function logAccess($recv_str)
+    {
+        // 记录访问日志
+        $log_data = date('Y-m-d H:i:s') . "\t REMOTE:" . $this->getRemoteAddress()."\n$recv_str";
+        if(isset(self::$accessLog[$_SERVER['HTTP_HOST']]))
+        {
+            file_put_contents(self::$accessLog[$_SERVER['HTTP_HOST']], $log_data, FILE_APPEND);
+        }
+        else
+        {
+            file_put_contents(self::$defaultAccessLog, $log_data, FILE_APPEND);
+        }
+    }
 }