瀏覽代碼

delete session_serialize session_unserialize

walkor 12 年之前
父節點
當前提交
deec4dd355
共有 3 個文件被更改,包括 41 次插入84 次删除
  1. 8 50
      applications/Common/Protocols/Http.php
  2. 0 24
      applications/Common/Protocols/Session.php
  3. 33 10
      workers/WorkerManAdmin.php

+ 8 - 50
applications/Common/Protocols/Http.php

@@ -200,11 +200,6 @@ function setcookie($name, $value = '', $maxage = 0, $path = '', $domain = '', $s
 }
 
 /**
- * http session 相关
- * 
- * */
-
-/**
  * session_start
  * 
  */
@@ -246,62 +241,19 @@ function session_start()
         $raw = file_get_contents(HttpCache::$instance->sessionFile);
         if($raw)
         { 
-            $_SESSION = session_unserialize($raw);
+            session_decode($raw);
         }
     }
 }
 
 /**
- * 反序列化session
- * @param string $raw
- */
-function session_unserialize($raw) {
-    $return_data = array();
-    $offset     = 0;
-
-    while ($offset < strlen($raw)) {
-        if (!strstr(substr($raw, $offset), "|")) {
-            return false;
-        }
-
-        $pos     = strpos($raw, "|", $offset);
-        $num     = $pos - $offset;
-        $varname = substr($raw, $offset, $num);
-        $offset += $num + 1;
-        $data    = unserialize(substr($raw, $offset));
-
-        $return_data[$varname] = $data;
-        $offset += strlen(serialize($data));
-    }
-
-    return $return_data;
-}
-
-/**
- * 序列化session
- * @param array $session
- */
-function session_serialize($session)
-{ 
-  $session_str = '';
-  if(is_array($session))
-  {
-    foreach($session as $key => $value)
-    {
-        $session_str .= "$key|".serialize($value);
-    }
-  }
-  return $session_str;
-}
-
-/**
  * 保存session
  */
 function session_write_close()
 {
     if(HttpCache::$instance->sessionStarted && !empty($_SESSION))
     {
-       $session_str = session_serialize($_SESSION);
+       $session_str = session_encode();
        if($session_str && HttpCache::$instance->sessionFile)
        {
            return file_put_contents(HttpCache::$instance->sessionFile, $session_str);
@@ -311,6 +263,11 @@ function session_write_close()
 }
 
 
+function jump_exit()
+{
+    throw new \Exception('jump_exit');
+}
+
 /**
  * 解析http协议数据包 缓存先关
  * @author walkor
@@ -332,5 +289,6 @@ class HttpCache
         {
             self::$sessionPath = sys_get_temp_dir();
         }
+        @\session_start();
     }
 }

+ 0 - 24
applications/Common/Protocols/Session.php

@@ -1,24 +0,0 @@
-<?php 
-namespace  App\Common\Protocols;
-/**
- * http session 相关
- * @author walkor <worker-man@qq.com>
- * */
-class Session{
-    
-    /**
-     * 构造函数
-     */
-    private  function __construct(){}
-    
-    /**
-     * http头
-     * @var array
-     */
-    public static $started = false;
-    
-   public static function start()
-   {
-       
-   }
-}

+ 33 - 10
workers/WorkerManAdmin.php

@@ -11,7 +11,10 @@ require_once WORKERMAN_ROOT_DIR . 'applications/Common/Protocols/Http.php';
  */
 class WorkerManAdmin extends Man\Core\SocketWorker
 {
-    
+    /**
+     * 资源类型
+     * @var array
+     */
     protected static $typeMap = array(
             'js'     => 'text/javascript',
             'png' => 'image/png',
@@ -41,37 +44,57 @@ class WorkerManAdmin extends Man\Core\SocketWorker
      */
     public function dealProcess($recv_str)
     {
-        /**
-         * 解析http协议,生成$_POST $_GET $_COOKIE
-         */
+         // http请求处理开始。解析http协议,生成$_POST $_GET $_COOKIE
         App\Common\Protocols\http_start($recv_str);
-        //App\Common\Protocols\session_start();
+        // 开启session
+        App\Common\Protocols\session_start();
+        // 缓冲输出
         ob_start();
-        $pos = strpos($_SERVER['REQUEST_URI'], '?');
+        // 请求的文件
         $file = $_SERVER['REQUEST_URI'];
+        $pos = strpos($file, '?');
         if($pos !== false)
         {
+            // 去掉文件名后面的querystring
             $file = substr($_SERVER['REQUEST_URI'], 0, $pos);
         }
-        $file = WORKERMAN_ROOT_DIR . 'applications/Wordpress/'.$file;
+        // 得到文件真实路径
+        $file = WORKERMAN_ROOT_DIR . 'applications/WorkerManAdmin/'.$file;
         if(!is_file($file))
         {
-            $file = WORKERMAN_ROOT_DIR . 'applications/Wordpress/index.php';
+            // 从定向到index.php
+            $file = WORKERMAN_ROOT_DIR . 'applications/WorkerManAdmin/index.php';
         }
+        // 请求的文件存在
         if(is_file($file))
         {
             $extension = pathinfo($file, PATHINFO_EXTENSION);
+            // 如果请求的是php文件
             if($extension == 'php')
             {
-                include $file;
+                // 载入php文件
+                try 
+                {
+                    include $file;
+                }
+                catch(\Exception $e) 
+                {
+                    // 如果不是exit
+                    if($e->getMessage() != 'jump_exit')
+                    {
+                        echo $e;
+                    }
+                }
             }
+            // 请求的是静态资源文件
             else
             {
                 if(isset(self::$typeMap[$extension]))
                 {
                     App\Common\Protocols\header('Content-Type: '. self::$typeMap[$extension]);
                 }
-                echo file_get_contents($file);
+                // 发送文件
+                readfile($file);
             }
         }
         else