You are here

public function RedisProfilerStorage::write in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/http-kernel/Profiler/RedisProfilerStorage.php \Symfony\Component\HttpKernel\Profiler\RedisProfilerStorage::write()

Saves a Profile.

Parameters

Profile $profile A Profile instance:

Return value

bool Write operation successful

Overrides ProfilerStorageInterface::write

File

vendor/symfony/http-kernel/Profiler/RedisProfilerStorage.php, line 161

Class

RedisProfilerStorage
RedisProfilerStorage stores profiling information in Redis.

Namespace

Symfony\Component\HttpKernel\Profiler

Code

public function write(Profile $profile) {
  $data = array(
    'token' => $profile
      ->getToken(),
    'parent' => $profile
      ->getParentToken(),
    'children' => array_map(function ($p) {
      return $p
        ->getToken();
    }, $profile
      ->getChildren()),
    'data' => $profile
      ->getCollectors(),
    'ip' => $profile
      ->getIp(),
    'method' => $profile
      ->getMethod(),
    'url' => $profile
      ->getUrl(),
    'time' => $profile
      ->getTime(),
  );
  $profileIndexed = false !== $this
    ->getValue($this
    ->getItemName($profile
    ->getToken()));
  if ($this
    ->setValue($this
    ->getItemName($profile
    ->getToken()), $data, $this->lifetime, self::REDIS_SERIALIZER_PHP)) {
    if (!$profileIndexed) {

      // Add to index
      $indexName = $this
        ->getIndexName();
      $indexRow = implode("\t", array(
        $profile
          ->getToken(),
        $profile
          ->getIp(),
        $profile
          ->getMethod(),
        $profile
          ->getUrl(),
        $profile
          ->getTime(),
        $profile
          ->getParentToken(),
        $profile
          ->getStatusCode(),
      )) . "\n";
      return $this
        ->appendValue($indexName, $indexRow, $this->lifetime);
    }
    return true;
  }
  return false;
}