walkor 11 роки тому
батько
коміт
220f90c13a

+ 2 - 0
applications/Statistics/Web/_init.php

@@ -0,0 +1,2 @@
+<?php
+define('ST_ROOT', realpath(dirname(__FILE__) . '/..'));

+ 2 - 0
applications/Statistics/Web/index.php

@@ -1 +1,3 @@
 <?php
+require_once WORKERMAN_ROOT_DIR .'applications/Statistics/Web/_init.php';
+include ST_ROOT . '/Views/home.php';

+ 1 - 1
conf/conf.d/StatisticWorker.conf

@@ -12,4 +12,4 @@ preread_length=65507
 
 
 ;统计查询用的socket
-provider_listen = tcp://0.0.0.055858
+provider_listen = tcp://0.0.0.0:55858

+ 1 - 1
conf/conf.d/WebServer.conf

@@ -17,4 +17,4 @@ include = ./applications/Common/Protocols/Http/mime.types
 ;域名 统计服务
 server_name = workerman.net
 ;统计服务根目录
-root[workerman.net] = ./applications/Statistic/Web
+root[workerman.net] = ./applications/Statistics/Web

+ 1 - 2
workers/StatisticWorker.php

@@ -1,6 +1,5 @@
 <?php 
 require_once WORKERMAN_ROOT_DIR . 'man/Core/SocketWorker.php';
-require_once WORKERMAN_ROOT_DIR . 'applications/Statistics/Lib/StatisticProtocol.php';
 /**
  * 
 * @author walkor <worker-man@qq.com>
@@ -229,7 +228,7 @@ class StatisticWorker extends Man\Core\SocketWorker
         \Man\Core\Lib\Task::add(self::CLEAR_PERIOD_LENGTH, array($this, 'clearDisk'), array(WORKERMAN_LOG_DIR . $this->logDir, self::EXPIRED_TIME));
         
         // 创建一个tcp监听,用来提供统计查询服务
-        $this->providerSocket = stream_socket_client(\Man\Core\Lib\Config::get($this->workerName.'.provider_listen'));
+        $this->providerSocket = stream_socket_server(\Man\Core\Lib\Config::get($this->workerName.'.provider_listen'));
         if($this->providerSocket)
         {
             $ret = $this->event->add($this->providerSocket,  \Man\Core\Events\BaseEvent::EV_READ, array($this, 'accept'));

+ 17 - 27
workers/WebServer.php

@@ -123,44 +123,34 @@ class WebServer extends Man\Core\SocketWorker
         App\Common\Protocols\Http\http_start($recv_str);
        
         // 请求的文件
-        $file = $_SERVER['REQUEST_URI'];
-        $pos = strpos($file, '?');
-        if($pos !== false)
+        $url_info = parse_url($_SERVER['REQUEST_URI']);
+        if(!$url_info)
         {
-            // 去掉文件名后面的querystring
-            $file = substr($file, 0, $pos);
+            App\Common\Protocols\Http\header('HTTP1.1/ 400 Bad Request');
+            return $this->sendToClient(App\Common\Protocols\Http\http_end(''));
         }
         
-        $extension = pathinfo($file, PATHINFO_EXTENSION);
+        $path = $url_info['path'];
+        
+        $path_info = pathinfo($path);
+        $extension = $path_info['basename'];
         if($extension == '')
         {
-            $dir_name = $file == '/' ? '' : $file;
-        }
-        else 
-        {
-            $dir_name = pathinfo($file, PATHINFO_DIRNAME);
+            $path = ($len = strlen($path)) && $path[$len -1] == '/' ? $path.'index.php' : $path . '/index.php';
+            $extension = 'php';
         }
         
-        // rootDir
-        $root_dir = isset(self::$serverRoot[$_SERVER['HTTP_HOST']]) ? self::$serverRoot[$_SERVER['HTTP_HOST']] : current(self::$serverRoot);
-        
-        // 得到文件真实路径
-        $file = "$root_dir/$file";
-        
         // 命中缓存,直接返回
-        if(isset(self::$fileCache[$file]) )
+        if(isset(self::$fileCache[$path]) )
         {
-                $file_content = self::$fileCache[$file];
+                $file_content = self::$fileCache[$path];
                 // 发送给客户端
                 return $this->sendToClient(App\Common\Protocols\Http\http_end($file_content));
         }
         
-        if(!is_file($file))
-        {
-            // 从定向到index.php
-            $file = $root_dir.'/'.$dir_name.'/index.php';
-            $extension = 'php';
-        }
+        $root_dir = isset(self::$serverRoot[$_SERVER['HTTP_HOST']]) ? self::$serverRoot[$_SERVER['HTTP_HOST']] : current(self::$serverRoot);
+        
+        $file = "$root_dir/$path";
         
         // 请求的文件存在
         if(is_file($file))
@@ -174,7 +164,7 @@ class WebServer extends Man\Core\SocketWorker
                 try 
                 {
                     // $_SERVER变量
-                    $_SERVER['SCRIPT_NAME'] = str_replace($root_dir, '', $file);
+                    $_SERVER['SCRIPT_NAME'] = $path;
                     $_SERVER['REMOTE_ADDR'] = $this->getRemoteIp();
                     $_SERVER['REMOTE_PORT'] = $this->getRemotePort();
                     $_SERVER['SERVER_ADDR'] = $this->getLocalIp();
@@ -258,7 +248,7 @@ class WebServer extends Man\Core\SocketWorker
         {
             // 404
             App\Common\Protocols\Http\header("HTTP/1.1 404 Not Found");
-            return $this->sendToClient(App\Common\Protocols\Http\http_end(''));
+            return $this->sendToClient(App\Common\Protocols\Http\http_end('<html><head><title>页面不存在</title></head><body><h3>WorkerMan提醒你,文件不存在</h3></body></html>'));
         }
     }
 }