source: spip-zone/_plugins_/xcache/inc/filecache.inc @ 32432

Last change on this file since 32432 was 32432, checked in by fil@…, 11 years ago

filecache.inc et nocache.inc

File size: 1.9 KB
Line 
1<?php
2
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
8
9/*
10mixed cache_get(string name)
11bool  cache_set(string name, mixed value [, int ttl])
12bool  cache_isset(string name)
13bool  cache_unset(string name)
14bool  cache_unset_by_prefix(string prefix)
15int   cache_inc(string name [, int value [, int ttl]])
16int   cache_dec(string name [, int value [, int ttl]])
17*/
18
19@define('_DIR_TMP_XCACHE', defined('_DIR_TMP') ? _DIR_TMP : 'tmp/');
20
21function cache_filename($u) {
22        return _DIR_TMP_XCACHE.'cache/'.md5($u);
23}
24function cache_delete_dir($dir) {
25        if ($d = @opendir($dir))
26                while (($f = readdir($d)) !== false)
27                        if (is_file($f))
28                                unlink($f);
29}
30
31function cache_get() {
32        $a = func_get_args();
33        if (lire_fichier(cache_filename($a[0]), $c)
34        AND $r = unserialize($c)
35        AND $r[1] <= time())
36                return $r[0];
37}
38
39function cache_set() {
40        $a = func_get_args();
41        $r = array($a[1]);
42        $r[1] = isset($a[2])
43                ? time() + intval($a[2])
44                : time() + 365*24*3600;
45        return ecrire_fichier(cache_filename($a[0]), serialize($r));
46}
47
48function cache_isset() {
49        $a = func_get_args();
50        if (lire_fichier(cache_filename($a[0]), $c)
51        AND $r = unserialize($c)
52        AND $r[1] <= time())
53                return true;
54        else
55                return false;
56}
57
58function cache_unset() {
59        $a = func_get_args();
60        return (
61                lire_fichier($f = cache_filename($a[0]), $c)
62                AND $s = supprimer_fichier($f)
63                AND $r = unserialize($c)
64                AND $r[1] <= time()
65        );
66}
67
68function cache_unset_by_prefix() {
69        # ici on efface tout aveuglement
70        cache_delete_dir(_DIR_TMP_XCACHE);
71        return true;
72}
73
74function cache_inc() {
75        $a = func_get_args();
76        $a[1] = intval(cache_get($a[0]))+1;
77        return call_user_func_array('xcache_set', $a);
78}
79
80function cache_dec() {
81        $a = func_get_args();
82        $a[1] = intval(cache_get($a[0]))-1;
83        return call_user_func_array('xcache_set', $a);
84}
85
86?>
Note: See TracBrowser for help on using the repository browser.