浏览代码

[ProfilerBundle] fixed storage read() method and unpack/pack data to avoid weird character in the data stream

Fabien Potencier 15 年之前
父节点
当前提交
450550d06d
共有 1 个文件被更改,包括 8 次插入2 次删除
  1. 8 2
      src/Symfony/Framework/ProfilerBundle/ProfilerStorage.php

+ 8 - 2
src/Symfony/Framework/ProfilerBundle/ProfilerStorage.php

@@ -58,14 +58,20 @@ class ProfilerStorage
   protected function read()
   {
     $db = $this->initDb(SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READ);
-    $this->data = $db->querySingle(sprintf("SELECT data FROM data WHERE token = '%s' LIMIT 1 ORDER BY created_at DESC", $db->escapeString($this->token)));
+    $data = $db->querySingle(sprintf("SELECT data FROM data WHERE token = '%s' LIMIT 1 ORDER BY created_at DESC", $db->escapeString($this->token)));
+
+    $this->data = unserialize(pack('H*', $data));
+
     $db->close();
   }
 
   public function write($data)
   {
+    $unpack = unpack('H*', serialize($data));
+    $data = $unpack[1];
+
     $db = $this->initDb(SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);
-    $db->exec(sprintf("INSERT INTO data (token, data, created_at) VALUES ('%s', '%s', %s)", $db->escapeString($this->token), $db->escapeString(serialize($data)), time()));
+    $db->exec(sprintf("INSERT INTO data (token, data, created_at) VALUES ('%s', '%s', %s)", $db->escapeString($this->token), $db->escapeString($data), time()));
     $db->close();
   }