Ignore:
Timestamp:
Oct 29, 2009, 8:59:04 AM (11 years ago)
Author:
fil@…
Message:

nettoyage de l'API et appels moins cryptiques

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/memoization/memo/eaccelerator.inc

    r32458 r32462  
    11<?php
    22
    3 # l'API de cache_set etc est exactement celle de xcache
    4 # a ceci pres qu'on se reserve un namespace specifique au site
    5 # afin de ne pas se melanger sur un serveur mutualise
    6 #
    7 # je laisse le soin a qui voudra de refaire ca en mode objet
     3/*
     4mixed cache_get(string key)
     5bool  cache_set(string key, mixed value [, int ttl])
     6bool  cache_isset(string key)
     7bool  cache_unset(string key)
     8int   cache_inc(string key [, int value [, int ttl]])
     9int   cache_dec(string key [, int value [, int ttl]])
     10bool  cache_lock(string key)
     11bool  cache_unlock(string key)
     12*/
    813
    9 /*
    10 mixed cache_get(string name)
    11 bool  cache_set(string name, mixed value [, int ttl])
    12 bool  cache_isset(string name)
    13 bool  cache_unset(string name)
    14 bool  cache_unset_by_prefix(string prefix)
    15 int   cache_inc(string name [, int value [, int ttl]])
    16 int   cache_dec(string name [, int value [, int ttl]])
    17 */
     14# http://bart.eaccelerator.net/doc/phpdoc/eAccelerator/_shared_memory_php.html
    1815
    1916@define('_CACHE_NAMESPACE', $_SERVER['HTTP_HOST'].':');
    2017
    21 function cache_get() {
    22         $a = func_get_args();
    23         $a[0] = _CACHE_NAMESPACE.$a[0];
    24         return ($v = call_user_func_array('eaccelerator_get', $a))
     18function cache_get($key) {
     19        return ($v = eaccelerator_get(_CACHE_NAMESPACE.$key))
    2520                ? @unserialize($v)
    2621                : null;
    2722}
    2823
    29 function cache_set() {
    30         $a = func_get_args();
    31         $a[0] = _CACHE_NAMESPACE.$a[0];
    32         $a[1] = serialize($a[1]);
    33         return call_user_func_array('eaccelerator_put', $a);
     24function cache_set($key, $value, $ttl = null) {
     25        $value = serialize($value);
     26        return is_null($ttl)
     27                ? eaccelerator_put(_CACHE_NAMESPACE.$key, $value)
     28                : eaccelerator_put(_CACHE_NAMESPACE.$key, $value, $ttl);
    3429}
    3530
    36 function cache_isset() {
    37         $a = func_get_args();
    38         return cache_get($a[0]) !== null;
     31function cache_isset($key) {
     32        return cache_get($key) !== null;
    3933}
    4034
    41 function cache_unset() {
    42         $a = func_get_args();
    43         $a[0] = _CACHE_NAMESPACE.$a[0];
    44         return call_user_func_array('eaccelerator_rm', $a);
     35function cache_unset($key) {
     36        return eaccelerator_rm(_CACHE_NAMESPACE.$key);
    4537}
    4638
    47 function cache_unset_by_prefix() {
    48         $a = func_get_args();
    49         return false; # on sait pas faire
     39function cache_inc($key) {
     40        while (!eaccelerator_lock($key)){ sleep(1); }
     41        $value = 1 + intval(cache_get($key));
     42        cache_set($key, $value);
     43        eaccelerator_unlock($key);
     44        return $value;
    5045}
    5146
    52 function cache_inc() {
    53         $a = func_get_args();
    54         $a[1] = intval(cache_get($a[0]))+1;
    55         return call_user_func_array('cache_set', $a);
     47function cache_dec($key) {
     48        while (!eaccelerator_lock($key)){ sleep(1); }
     49        $value = -1 + intval(cache_get($key));
     50        cache_set($key, $value);
     51        eaccelerator_unlock($key);
     52        return $value;
    5653}
    5754
    58 function cache_dec() {
    59         $a = func_get_args();
    60         $a[1] = intval(cache_get($a[0]))-1;
    61         return call_user_func_array('cache_set', $a);
     55function cache_lock($key) {
     56        return eaccelerator_lock(_CACHE_NAMESPACE.$key);
     57}
     58
     59function cache_unlock($key) {
     60        return eaccelerator_unlock(_CACHE_NAMESPACE.$key);
    6261}
    6362
Note: See TracChangeset for help on using the changeset viewer.