public function DatabaseBackend::set

Implements Drupal\Core\Cache\CacheBackendInterface::set().

Overrides CacheBackendInterface::set

File

drupal/core/lib/Drupal/Core/Cache/DatabaseBackend.php, line 143
Definition of Drupal\Core\Cache\DatabaseBackend.

Class

DatabaseBackend
Defines a default cache implementation.

Namespace

Drupal\Core\Cache

Code

public function set($cid, $data, $expire = CacheBackendInterface::CACHE_PERMANENT, array $tags = array()) {
  $try_again = FALSE;
  try {

    // The bin might not yet exist.
    $this
      ->doSet($cid, $data, $expire, $tags);
  } catch (\Exception $e) {

    // If there was an exception, try to create the bins.
    if (!($try_again = $this
      ->ensureBinExists())) {

      // If the exception happened for other reason than the missing bin
      // table, propagate the exception.
      throw $e;
    }
  }

  // Now that the bin has been created, try again if necessary.
  if ($try_again) {
    $this
      ->doSet($cid, $data, $expire, $tags);
  }
}