8000 Merge pull request #141 from timophey01/add-statsd-on-redis · etherscan-io/Ethplorer@2d4965d · GitHub
[go: up one dir, main page]

Skip to content

Commit 2d4965d

Browse files
authored
Merge pull request EverexIO#141 from timophey01/add-statsd-on-redis
size without json_encode
2 parents 7731114 + 600ed35 commit 2d4965d

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

service/lib/cache.php

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,13 @@ protected function startTiming($prefix) {
178178
}
179179
}
180180

181-
protected function stopTiming($prefix, $size) {
181+
protected function stopTiming($prefix, $size = false) {
182182
if ($this->metric) {
183183
$this->metric->endTiming($prefix);
184-
// I know that is not a timing but statsd make for timing min max
185-
$this->metric->timing('size.' . $prefix , $size);
184+
if ($size) {
185+
// I know that is not a timing but statsd make for timing min max
186+
$this->metric->timing('size.' . $prefix , $size);
187+
}
186188
}
187189
}
188190

@@ -234,6 +236,7 @@ public function save($entryName, $data, $nonExpiration = FALSE){
234236
$this->startTiming($metricPrefix);
235237
$saveRes = false;
236238
$this->store($entryName, $data);
239+
$size = false;
237240
switch($this->driver){
238241
case 'redis':
239242
case 'memcached':
@@ -254,10 +257,12 @@ public function save($entryName, $data, $nonExpiration = FALSE){
254257
$aCachedData = array('lifetime' => $lifetime, 'data' => $data, 'lock' => true);
255258
if('redis' == $this->driver){
256259
$saveOptions = JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE | JSON_PARTIAL_OUTPUT_ON_ERROR;
260+
$serializedCashData = json_encode($aCachedData, $saveOptions);
261+
$size = strlen($serializedCashData);
257262
if($nonExpiration){
258-
$saveRes = $this->oDriver->set($entryName, json_encode($aCachedData, $saveOptions));
263+
$saveRes = $this->oDriver->set($entryName, $serializedCashData);
259264
}else{
260-
$saveRes = $this->oDriver->set($entryName, json_encode($aCachedData, $saveOptions), 'ex', $ttl);
265+
$saveRes = $this->oDriver->set($entryName, $serializedCashData, 'ex', $ttl);
261266
}
262267
if('OK' !== (string)$saveRes){
263268
error_log("Write data to redis failed: " . $saveRes . " Data: " . json_encode($aCachedData) . " TTL: " . $ttl);
@@ -273,11 +278,12 @@ public function save($entryName, $data, $nonExpiration = FALSE){
273278
$filename = $this->path . '/' . $entryName . ".tmp";
274279
//@unlink($filename);
275280
$json = json_encode($data, JSON_PRETTY_PRINT);
281+
$size = strlen($json);
276282
$saveRes = !!file_put_contents($filename, $json);
277283
break;
278284
}
279285
if($this->useLocks) $this->deleteLock($entryName);
280-
$this->stopTiming($metricPrefix, strlen(json_encode($data)));
286+
$this->stopTiming($metricPrefix, $size);
281287
return $saveRes;
282288
}
283289

@@ -359,8 +365,15 @@ public function loadCachedData($entryName, $default = NULL, $cacheLifetime = FAL
359365
$this->startTiming($prefix);
360366
$result = array('data' => $default, 'expired' => FALSE);
361367
$file = ('file' === $this->driver);
368+
$size = false;
362369
if('memcached' === $this->driver || 'redis' === $this->driver){
363-
$memcachedData = ('redis' == $this->driver) ? json_decode($this->oDriver->get($entryName), TRUE) : $this->oDriver->get($entryName);
370+
if ('redis' == $this->driver) {
371+
$cachedData = $this->oDriver->get($entryName);
372+
$size = strlen($cachedData);
373+
$memcachedData = json_decode($this->oDriver->get($entryName), TRUE);
374+
} else {
375+
$memcachedData = $this->oDriver->get($entryName);
376+
}
364377
if($memcachedData && isset($memcachedData['lifetime']) && isset($memcachedData['data'])){
365378
$result['data'] = $memcachedData['data'];
366379
if($memcachedData['lifetime'] > 0 && $memcachedData['lifetime'] < time()){
@@ -388,12 +401,13 @@ public function loadCachedData($entryName, $default = NULL, $cacheLifetime = FAL
388401
}
389402
if(!$isFileExpired || !$result['data'] || $result['expired']){
390403
$contents = @file_get_contents($filename);
404+
$size = strlen($contents);
391405
$result['data'] = json_decode($contents, TRUE);
392406
$result['expired'] = $isFileExpired;
393407
}
394408
}
395409
}
396-
$this->stopTiming($prefix, strlen(json_encode($result)));
410+
$this->stopTiming($prefix, $size);
397411
return $result;
398412
}
399413

0 commit comments

Comments
 (0)
0