PluginProbe
UpdraftPlus: WP Backup & Migration Plugin / 1.16.5
UpdraftPlus: WP Backup & Migration Plugin v1.16.5
1.26.7 1.26.6 1.26.5 1.26.4 1.26.3 1.9.19 1.9.25 1.9.26 1.9.30 1.9.31 1.9.32 1.9.4 1.9.40 1.9.41 1.9.42 1.9.43 1.9.44 1.9.45 1.9.46 1.9.5 1.9.50 1.9.51 1.9.60 1.9.62 1.9.63 All 371 releases
updraftplus / includes / Google / Cache / Apc.php

Apc.php in UpdraftPlus: WP Backup & Migration Plugin 1.16.5, at includes/Google/Cache/Apc.php

114 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 * Copyright 2010 Google Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 if (!class_exists('Google_Client')) {
19 require_once dirname(__FILE__) . '/../autoload.php';
20 }
21
22 /**
23 * A persistent storage class based on the APC cache, which is not
24 * really very persistent, as soon as you restart your web server
25 * the storage will be wiped, however for debugging and/or speed
26 * it can be useful, and cache is a lot cheaper then storage.
27 *
28 * @author Chris Chabot <chabotc@google.com>
29 */
30 class Google_Cache_Apc extends Google_Cache_Abstract
31 {
32 /**
33 * @var Google_Client the current client
34 */
35 private $client;
36
37 public function __construct(Google_Client $client)
38 {
39 if (! function_exists('apc_add') ) {
40 $error = "Apc functions not available";
41
42 $client->getLogger()->error($error);
43 throw new Google_Cache_Exception($error);
44 }
45
46 $this->client = $client;
47 }
48
49 /**
50 * @inheritDoc
51 */
52 public function get($key, $expiration = false)
53 {
54 $ret = apc_fetch($key);
55 if ($ret === false) {
56 $this->client->getLogger()->debug(
57 'APC cache miss',
58 array('key' => $key)
59 );
60 return false;
61 }
62 if (is_numeric($expiration) && (time() - $ret['time'] > $expiration)) {
63 $this->client->getLogger()->debug(
64 'APC cache miss (expired)',
65 array('key' => $key, 'var' => $ret)
66 );
67 $this->delete($key);
68 return false;
69 }
70
71 $this->client->getLogger()->debug(
72 'APC cache hit',
73 array('key' => $key, 'var' => $ret)
74 );
75
76 return $ret['data'];
77 }
78
79 /**
80 * @inheritDoc
81 */
82 public function set($key, $value)
83 {
84 $var = array('time' => time(), 'data' => $value);
85 $rc = apc_store($key, $var);
86
87 if ($rc == false) {
88 $this->client->getLogger()->error(
89 'APC cache set failed',
90 array('key' => $key, 'var' => $var)
91 );
92 throw new Google_Cache_Exception("Couldn't store data");
93 }
94
95 $this->client->getLogger()->debug(
96 'APC cache set',
97 array('key' => $key, 'var' => $var)
98 );
99 }
100
101 /**
102 * @inheritDoc
103 * @param String $key
104 */
105 public function delete($key)
106 {
107 $this->client->getLogger()->debug(
108 'APC cache delete',
109 array('key' => $key)
110 );
111 apc_delete($key);
112 }
113 }
114