Scripts › Bekijken

Toevoegen | Categorie:


Cache class

Stukje coding van ongeveer een halfjaar/3-kwart jaar geleden. Hiermee kan je data (uit bijvoorbeeld je database) wegschrijven naar een server-bestand, zodat je SQL-Server minder wordt belast. Ook is het gewoon mogelijk om hele webpagina's of alleen variabelen hierin te cachen. Lifetime instellen, en viola!

Voorbeeldje:

Code tonen/verbergenCodeDeze code in een nieuw vensterDeze code in een tekstveldDeze code in een zip file downloaden
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php

require_once('Cache.class.php');

/**
 * @author LorenzPHP
 * @copyright 2010
 */

New Cache('cache'); // Map waar de data heen gaat..

/**
 * Cache web-url
 */

$cache file_get_contents('http://www.bulletstar.net/rss.php');

    if (
Cache::isCached($cache))
    {
        print 
Cache::Read($cache);
    }
    else
    {
        if (
Cache::Write($cache5*60)) // Lifetime is 5 minuten.   
        
{
            print 
Cache::Read($cache);
        }
    }
    
/**
 * Cache another data
 */

    
if (!Cache::isCached('test')) // Wanneer je zeker weet dat het bestand niet bestaat..
    
{
        if (
Cache::Write('test'300))
        {
            print 
'Succesvol opgeslagen.';        // Lifetime is 300 seconden (zelfde als 5 minuten)   
        
}
    }
?>





Veel succes ermee!

Code tonen/verbergenCodeDeze code in een nieuw vensterDeze code in een tekstveldDeze code in een zip file downloaden
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
error_reporting
(E_ALL);

/**
* Cache data to a file on the server.
*
* @static
* @author Lorenzo de Kamps
* @since 14-05-2010
* @copyright 2010 - 2011, Lorenzo de Kamps
* @version 1.0 stable
*/

class Cache
{
    public static 
$dir;
    public static 
$file;
    public static 
$lifetime;
    public static 
$dir_file;
    
    public function 
__construct($direct)
    {
        try
        {
            
self::$dir $direct
            if (!
is_dir(self::$dir))
            {
                
$create mkdir(self::$dir0777);
                if (!
$create)
                {
                    Throw new 
Exeption('Can\'t create cache-directory.');
                }
            }
            
        }
        catch (
Exception $e)
        {
            
self::ErrorHandler($e->getMessage());
        }
    }
    
    
    public static function 
isCached($file)
    {
           
$string md5($file);
           
self::$dir_file self::$dir.'/'.$string.'.txt';
           
$open = @fopen(self::$dir_file'r');
           if (
$open)
           {
                return 
true;
           }
           else
           {
                return 
false;
           }     
    }
    
    public static function 
Read($cache)
    {
         try
        {
           
$string md5($cache);
           
$open fopen(self::$dir_file'r');
           if (
$open)
           {
                    
$theData fread($open,1000000);
                    
$un unserialize($theData);
                    
fclose($open);
                                     
                    if (
$un['timestamp'] < time() - self::$lifetime)
                    {
                        
unlink(self::$dir_file);
                        
Cache::Write($cache);
                    }  
                    return 
$un['data'];  
           }
           else
           {
                throw New 
Exception('Can\'t open file.');
           }
        }
        catch (
Exception $e)
        {
           
self::ErrorHandler($e->getMessage()); 
        }      
    }
    
    public static function 
Write($item$lifetime 300)
    {
        try
        {
            
self::$lifetime $lifetime;
            
           
$string md5($item); 
           
$create fopen(self::$dir_file'w');
           
$file $item;
           if (
$create)
           {
                if (
$file)
                {
                    
$data = array(
                        
'timestamp' => time(),
                        
'data'      => $file
                    
);
                    
fputs($createserialize($data));
                    
fclose($create);
                    return 
true;
                }
                else
                {
                    throw new 
Exception('Can\'t read web-adres.');
                }
                
           }
           else
           {
                throw new 
Exception('Can\'t create file.');
           }
        }
        catch (
Exception $e)
        {
           
self::ErrorHandler($e->getMessage()); 
        }      
    }
    
    private static function 
ErrorHandler($error)
    {
        return print 
"<pre>".$error."</pre>";
    }
    
}

?>


2 reacties | reageren


Rating

Stemmen: 3Je moet ingelogd zijn om te stemmen!