Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function execute($args = array(), $options = array())
 {
     if (isset($options['fetch'])) {
         if (is_string($options['fetch'])) {
             // \PDO::FETCH_PROPS_LATE tells __construct() to run before properties
             // are added to the object.
             $this->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, $options['fetch']);
         } else {
             $this->setFetchMode($options['fetch']);
         }
     }
     $logger = $this->dbh->getLogger();
     if (!empty($logger)) {
         $query_start = microtime(TRUE);
     }
     $return = parent::execute($args);
     if (!empty($logger)) {
         $query_end = microtime(TRUE);
         $logger->log($this, $args, $query_end - $query_start);
     }
     return $return;
 }
 /**
  * {@inheritdoc}
  */
 public function collect(Request $request, Response $response, \Exception $exception = NULL)
 {
     $queries = $this->database->getLogger()->get('webprofiler');
     foreach ($queries as &$query) {
         // Remove caller args.
         unset($query['caller']['args']);
         // Remove query args element if empty.
         if (empty($query['args'])) {
             unset($query['args']);
         }
         // Save time in milliseconds.
         $query['time'] = $query['time'] * 1000;
     }
     $querySort = $this->configFactory->get('webprofiler.config')->get('query_sort');
     if ('duration' === $querySort) {
         usort($queries, ["Drupal\\webprofiler\\DataCollector\\DatabaseDataCollector", "orderQueryByTime"]);
     }
     $this->data['queries'] = $queries;
     $options = $this->database->getConnectionOptions();
     // Remove password for security.
     unset($options['password']);
     $this->data['database'] = $options;
 }
Exemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 public function execute($args = array(), $options = array())
 {
     if (isset($options['fetch'])) {
         if (is_string($options['fetch'])) {
             // Default to an object. Note: db fields will be added to the object
             // before the constructor is run. If you need to assign fields after
             // the constructor is run. See https://www.drupal.org/node/315092.
             $this->setFetchMode(\PDO::FETCH_CLASS, $options['fetch']);
         } else {
             $this->setFetchMode($options['fetch']);
         }
     }
     $logger = $this->dbh->getLogger();
     if (!empty($logger)) {
         $query_start = microtime(TRUE);
     }
     // Prepare the query.
     $statement = $this->getStatement($this->queryString, $args);
     if (!$statement) {
         $this->throwPDOException();
     }
     $return = $statement->execute($args);
     if (!$return) {
         $this->throwPDOException();
     }
     if ($options['return'] == Database::RETURN_AFFECTED) {
         $this->rowCount = $statement->rowCount();
     }
     // Fetch all the data from the reply, in order to release any lock
     // as soon as possible.
     $this->data = $statement->fetchAll(\PDO::FETCH_ASSOC);
     // Destroy the statement as soon as possible. See the documentation of
     // \Drupal\Core\Database\Driver\sqlite\Statement for an explanation.
     unset($statement);
     $this->resultRowCount = count($this->data);
     if ($this->resultRowCount) {
         $this->columnNames = array_keys($this->data[0]);
     } else {
         $this->columnNames = array();
     }
     if (!empty($logger)) {
         $query_end = microtime(TRUE);
         $logger->log($this, $args, $query_end - $query_start);
     }
     // Initialize the first row in $this->currentRow.
     $this->next();
     return $return;
 }