cache-install.inc 2.15 KB
Newer Older
1
<?php
2

3
/**
4
5
6
7
8
9
10
11
12
13
14
15
 * @file
 * Provides a stub cache implementation to be used during installation.
 */

/**
 * A stub cache implementation to be used during the installation process.
 *
 * The stub implementation is needed when database access is not yet available.
 * Because Drupal's caching system never requires that cached data be present,
 * these stub functions can short-circuit the process and sidestep the need for
 * any persistent storage. Obviously, using this cache implementation during
 * normal operations would have a negative impact on performance.
16
 */
17
class DrupalFakeCache extends DrupalDatabaseCache implements DrupalCacheInterface {
18
19
20
  function get($cid) {
    return FALSE;
  }
21

22
23
24
  function getMultiple(&$cids) {
    return array();
  }
25

26
  function set($cid, $data, $expire = CACHE_PERMANENT) {
27
28
29
  }

  function clear($cid = NULL, $wildcard = FALSE) {
30
31
32
    // If there is a database cache, attempt to clear it whenever possible. The
    // reason for doing this is that the database cache can accumulate data
    // during installation due to any full bootstraps that may occur at the
33
    // same time (for example, Ajax requests triggered by the installer). If we
34
35
36
37
38
39
40
41
42
    // didn't try to clear it whenever this function is called, the data in the
    // cache would become stale; for example, the installer sometimes calls
    // variable_set(), which updates the {variable} table and then clears the
    // cache to make sure that the next page request picks up the new value.
    // Not actually clearing the cache here therefore leads old variables to be
    // loaded on the first page requests after installation, which can cause
    // subtle bugs, some of which would not be fixed unless the site
    // administrator cleared the cache manually.
    try {
43
      if (class_exists('Database')) {
44
45
46
47
48
49
50
51
52
        parent::clear($cid, $wildcard);
      }
    }
    // If the attempt at clearing the cache causes an error, that means that
    // either the database connection is not set up yet or the relevant cache
    // table in the database has not yet been created, so we can safely do
    // nothing here.
    catch (Exception $e) {
    }
53
  }
54
55
56
57

  function isEmpty() {
    return TRUE;
  }
58
}