[HttpKernel] added import/export to Profiler
This commit is contained in:
parent
5470f0290e
commit
8c6478dab9
@ -89,6 +89,28 @@ class Profiler
|
|||||||
return $profiler;
|
return $profiler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function export()
|
||||||
|
{
|
||||||
|
$unpack = unpack('H*', serialize(array($this->token, $this->collectors, $this->ip, $this->url, $this->time)));
|
||||||
|
|
||||||
|
return $unpack[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function import($data)
|
||||||
|
{
|
||||||
|
list($token, $collectors, $ip, $url, $time) = unserialize(pack('H*', $data));
|
||||||
|
|
||||||
|
if (false !== $this->storage->read($token)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$unpack = unpack('H*', serialize($this->collectors));
|
||||||
|
|
||||||
|
$this->storage->write($token, $unpack[1], $ip, $url, $time);
|
||||||
|
|
||||||
|
return $token;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the token.
|
* Sets the token.
|
||||||
*
|
*
|
||||||
@ -99,8 +121,8 @@ class Profiler
|
|||||||
$this->token = $token;
|
$this->token = $token;
|
||||||
|
|
||||||
if (false !== $items = $this->storage->read($token)) {
|
if (false !== $items = $this->storage->read($token)) {
|
||||||
list($collectors, $this->ip, $this->url, $this->time) = $items;
|
list($data, $this->ip, $this->url, $this->time) = $items;
|
||||||
$this->setCollectors($collectors);
|
$this->setCollectors(unserialize(pack('H*', $data)));
|
||||||
|
|
||||||
$this->empty = false;
|
$this->empty = false;
|
||||||
} else {
|
} else {
|
||||||
@ -200,9 +222,9 @@ class Profiler
|
|||||||
$this->url = $request->getUri();
|
$this->url = $request->getUri();
|
||||||
$this->time = time();
|
$this->time = time();
|
||||||
|
|
||||||
|
$unpack = unpack('H*', serialize($this->collectors));
|
||||||
try {
|
try {
|
||||||
$this->storage->write($this->token, $this->collectors, $this->ip, $this->url, $this->time);
|
$this->storage->write($this->token, $unpack[1], $this->ip, $this->url, $this->time);
|
||||||
|
|
||||||
$this->empty = false;
|
$this->empty = false;
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
if (null !== $this->logger) {
|
if (null !== $this->logger) {
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\HttpKernel\Profiler;
|
namespace Symfony\Component\HttpKernel\Profiler;
|
||||||
|
|
||||||
use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of the Symfony framework.
|
* This file is part of the Symfony framework.
|
||||||
*
|
*
|
||||||
@ -38,7 +36,7 @@ interface ProfilerStorageInterface
|
|||||||
*
|
*
|
||||||
* @param string $token A token
|
* @param string $token A token
|
||||||
*
|
*
|
||||||
* @return DataCollectorInterface[] An array of DataCollectorInterface instance
|
* @return string The data associated with token
|
||||||
*/
|
*/
|
||||||
function read($token);
|
function read($token);
|
||||||
|
|
||||||
@ -46,10 +44,10 @@ interface ProfilerStorageInterface
|
|||||||
* Reads data associated with the given token.
|
* Reads data associated with the given token.
|
||||||
*
|
*
|
||||||
* @param string $token A token
|
* @param string $token A token
|
||||||
* @param DataCollectorInterface[] $collectors An array of DataCollectorInterface instances
|
* @param string $data The data associated with token
|
||||||
* @param string $ip An IP
|
* @param string $ip An IP
|
||||||
* @param string $url An URL
|
* @param string $url An URL
|
||||||
* @param integer $time The time of the data
|
* @param integer $time The time of the data
|
||||||
*/
|
*/
|
||||||
function write($token, $collectors, $ip, $url, $time);
|
function write($token, $data, $ip, $url, $time);
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ class SQLiteProfilerStorage implements ProfilerStorageInterface
|
|||||||
$data = $this->fetch($db, 'SELECT data, ip, url, time FROM data WHERE token = :token ORDER BY time DESC LIMIT 1', $args);
|
$data = $this->fetch($db, 'SELECT data, ip, url, time FROM data WHERE token = :token ORDER BY time DESC LIMIT 1', $args);
|
||||||
$this->close($db);
|
$this->close($db);
|
||||||
if (isset($data[0]['data'])) {
|
if (isset($data[0]['data'])) {
|
||||||
return array(unserialize(pack('H*', $data[0]['data'])), $data[0]['ip'], $data[0]['url'], $data[0]['time']);
|
return array($data[0]['data'], $data[0]['ip'], $data[0]['url'], $data[0]['time']);
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -78,11 +78,8 @@ class SQLiteProfilerStorage implements ProfilerStorageInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function write($token, $collectors, $ip, $url, $time)
|
public function write($token, $data, $ip, $url, $time)
|
||||||
{
|
{
|
||||||
$unpack = unpack('H*', serialize($collectors));
|
|
||||||
$data = $unpack[1];
|
|
||||||
|
|
||||||
$db = $this->initDb();
|
$db = $this->initDb();
|
||||||
$args = array(
|
$args = array(
|
||||||
':token' => $token,
|
':token' => $token,
|
||||||
@ -125,6 +122,7 @@ class SQLiteProfilerStorage implements ProfilerStorageInterface
|
|||||||
|
|
||||||
$db->exec('CREATE TABLE IF NOT EXISTS data (token STRING, data STRING, ip STRING, url STRING, time INTEGER)');
|
$db->exec('CREATE TABLE IF NOT EXISTS data (token STRING, data STRING, ip STRING, url STRING, time INTEGER)');
|
||||||
$db->exec('CREATE INDEX IF NOT EXISTS data_data ON data (time)');
|
$db->exec('CREATE INDEX IF NOT EXISTS data_data ON data (time)');
|
||||||
|
$db->exec('CREATE UNIQUE INDEX IF NOT EXISTS data_token ON data (token)');
|
||||||
|
|
||||||
return $db;
|
return $db;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user