cache-memcached.php

Memcached driver for my cache library
git clone git://git.finwo.net/lib/cache-memcached.php
Log | Files | Refs | README

commit ba9a3276dd7d2481e8e240357e2700f59c188e4d
parent c5dffd546ec5e82847f21815b14eb282ab2503f9
Author: finwo <finwo@pm.me>
Date:   Thu, 14 Apr 2016 12:31:03 +0200

Bugfix

Diffstat:
Msrc/Memcached.php | 25++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/src/Memcached.php b/src/Memcached.php @@ -52,14 +52,14 @@ class Memcached extends Cache public function fetch($key = '', $ttl = 30) { // Generate seperate keys for fetching - $key_lock = sprintf("%s_lock", $key); - $key_data = sprintf("%s_data", $key); - $key_ttl = sprintf("%s_ttl", $key); + $key_lock = md5(sprintf("%s_lock", $key)); + $key_data = md5(sprintf("%s_data", $key)); + $key_ttl = md5(sprintf("%s_ttl", $key)); // Fetch memcached object $memcached = $this->getMemcached(); - // Fetch TTL + // Fetch data $data_data = $memcached->get($key_data); // Return data if the current TTL is still valid @@ -74,7 +74,7 @@ class Memcached extends Cache // Mark we're refreshing for ttl/10 // Also give it 2 seconds, because some operations take time - $memcached->add($key_lock, true, max(2,$ttl/10)); + $memcached->add($key_lock, 'Hello World', max(2,$ttl/10)); // And return that we don't have recent data return false; @@ -86,17 +86,24 @@ class Memcached extends Cache public function store($key = '', $value, $ttl = 30) { // Generate seperate keys for storing - $key_data = sprintf("%s_data", $key); - $key_ttl = sprintf("%s_ttl", $key); + $key_data = md5(sprintf("%s_data", $key)); + $key_ttl = md5(sprintf("%s_ttl", $key)); + + // Pre-generate time + $time_data = max(3600, $ttl*10); // Fetch memcached object $memcached = $this->getMemcached(); // Store data - $memcached->add($key_data, $value, max(3600, $ttl*10)); + if($memcached->get($key_data)) { + $memcached->replace($key_data, $value, $time_data); + } else { + $memcached->add($key_data, $value, $time_data); + } // Store TTL - $memcached->add($key_ttl, true, $ttl); + $memcached->add($key_ttl, 'Hello World', $ttl); // Return ourselves return $this;