2015-08-18 00:00:26 +00:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\HttpKernel\Profiler ;
2016-04-20 16:56:34 +00:00
@ trigger_error ( 'The ' . __NAMESPACE__ . '\MysqlProfilerStorage class is deprecated since Symfony 2.8 and will be removed in 3.0. Use FileProfilerStorage instead.' , E_USER_DEPRECATED );
2015-08-18 00:00:26 +00:00
/**
* A ProfilerStorage for Mysql .
*
* @ author Jan Schumann < js @ schumann - it . com >
2016-04-20 16:56:34 +00:00
*
* @ deprecated Deprecated since Symfony 2.8 , to be removed in Symfony 3.0 .
* Use { @ link FileProfilerStorage } instead .
2015-08-18 00:00:26 +00:00
*/
class MysqlProfilerStorage extends PdoProfilerStorage
{
/**
* { @ inheritdoc }
*/
protected function initDb ()
{
if ( null === $this -> db ) {
if ( 0 !== strpos ( $this -> dsn , 'mysql' )) {
throw new \RuntimeException ( sprintf ( 'Please check your configuration. You are trying to use Mysql with an invalid dsn "%s". The expected format is "mysql:dbname=database_name;host=host_name".' , $this -> dsn ));
}
if ( ! class_exists ( 'PDO' ) || ! in_array ( 'mysql' , \PDO :: getAvailableDrivers (), true )) {
throw new \RuntimeException ( 'You need to enable PDO_Mysql extension for the profiler to run properly.' );
}
$db = new \PDO ( $this -> dsn , $this -> username , $this -> password );
$db -> exec ( 'CREATE TABLE IF NOT EXISTS sf_profiler_data (token VARCHAR(255) PRIMARY KEY, data LONGTEXT, ip VARCHAR(64), method VARCHAR(6), url VARCHAR(255), time INTEGER UNSIGNED, parent VARCHAR(255), created_at INTEGER UNSIGNED, status_code SMALLINT UNSIGNED, KEY (created_at), KEY (ip), KEY (method), KEY (url), KEY (parent))' );
$this -> db = $db ;
}
return $this -> db ;
}
/**
* { @ inheritdoc }
*/
protected function buildCriteria ( $ip , $url , $start , $end , $limit , $method )
{
$criteria = array ();
$args = array ();
if ( $ip = preg_replace ( '/[^\d\.]/' , '' , $ip )) {
$criteria [] = 'ip LIKE :ip' ;
$args [ ':ip' ] = '%' . $ip . '%' ;
}
if ( $url ) {
$criteria [] = 'url LIKE :url' ;
$args [ ':url' ] = '%' . addcslashes ( $url , '%_\\' ) . '%' ;
}
if ( $method ) {
$criteria [] = 'method = :method' ;
$args [ ':method' ] = $method ;
}
if ( ! empty ( $start )) {
$criteria [] = 'time >= :start' ;
$args [ ':start' ] = $start ;
}
if ( ! empty ( $end )) {
$criteria [] = 'time <= :end' ;
$args [ ':end' ] = $end ;
}
return array ( $criteria , $args );
}
}