c21691df96290b96eaa77e9c0faab5646c228a6a
[yaffs-website] / vendor / doctrine / cache / lib / Doctrine / Common / Cache / CouchbaseCache.php
1 <?php
2 /*
3  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14  *
15  * This software consists of voluntary contributions made by many individuals
16  * and is licensed under the MIT license. For more information, see
17  * <http://www.doctrine-project.org>.
18  */
19
20 namespace Doctrine\Common\Cache;
21
22 use \Couchbase;
23
24 /**
25  * Couchbase cache provider.
26  *
27  * @link   www.doctrine-project.org
28  * @since  2.4
29  * @author Michael Nitschinger <michael@nitschinger.at>
30  */
31 class CouchbaseCache extends CacheProvider
32 {
33     /**
34      * @var Couchbase|null
35      */
36     private $couchbase;
37
38     /**
39      * Sets the Couchbase instance to use.
40      *
41      * @param Couchbase $couchbase
42      *
43      * @return void
44      */
45     public function setCouchbase(Couchbase $couchbase)
46     {
47         $this->couchbase = $couchbase;
48     }
49
50     /**
51      * Gets the Couchbase instance used by the cache.
52      *
53      * @return Couchbase|null
54      */
55     public function getCouchbase()
56     {
57         return $this->couchbase;
58     }
59
60     /**
61      * {@inheritdoc}
62      */
63     protected function doFetch($id)
64     {
65         return $this->couchbase->get($id) ?: false;
66     }
67
68     /**
69      * {@inheritdoc}
70      */
71     protected function doContains($id)
72     {
73         return (null !== $this->couchbase->get($id));
74     }
75
76     /**
77      * {@inheritdoc}
78      */
79     protected function doSave($id, $data, $lifeTime = 0)
80     {
81         if ($lifeTime > 30 * 24 * 3600) {
82             $lifeTime = time() + $lifeTime;
83         }
84         return $this->couchbase->set($id, $data, (int) $lifeTime);
85     }
86
87     /**
88      * {@inheritdoc}
89      */
90     protected function doDelete($id)
91     {
92         return $this->couchbase->delete($id);
93     }
94
95     /**
96      * {@inheritdoc}
97      */
98     protected function doFlush()
99     {
100         return $this->couchbase->flush();
101     }
102
103     /**
104      * {@inheritdoc}
105      */
106     protected function doGetStats()
107     {
108         $stats   = $this->couchbase->getStats();
109         $servers = $this->couchbase->getServers();
110         $server  = explode(":", $servers[0]);
111         $key     = $server[0] . ":" . "11210";
112         $stats   = $stats[$key];
113         return array(
114             Cache::STATS_HITS   => $stats['get_hits'],
115             Cache::STATS_MISSES => $stats['get_misses'],
116             Cache::STATS_UPTIME => $stats['uptime'],
117             Cache::STATS_MEMORY_USAGE     => $stats['bytes'],
118             Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'],
119         );
120     }
121 }