root/dev/common/includes/class.cache.php @ 317

Revision 317, 3.4 KB (checked in by ralle030583, 15 years ago)

- ADD (TEST) api class for testing, getCharId from eve, atm commented out
- fixes for Tickets #74,#75,#77
- DBUpdate004: trinity ships had wrong tech level
- mailer should now send the killmail per email instead of msg that is classified
- and fixed the version in readme cause of the confusion ;-)

Line 
1<?php
2
3class cache
4{
5    function checkLoad()
6    {
7        if (PHP_OS != 'Linux')
8        {
9            return false;
10        }
11
12        $load = @file_get_contents('/proc/loadavg');
13        if (false === $load)
14        {
15            return false;
16        }
17        $array = explode(' ', $load);
18        if ((float)$array[0] > (float)config::get('reinforced_threshold'))
19        {
20            // put killboard into RF
21            config::set('is_reinforced', 1);
22        }
23        elseif ((float)$array[0] > (float)config::get('reinforced_disable_threshold') && config::get('is_reinforced'))
24        {
25            // do nothing, we are in RF, load is dropping but stil over disabling threshold
26        }
27        else
28        {
29            // load low, dont enter reinforced
30            config::set('is_reinforced', 0);
31        }
32    }
33
34    function shouldCache()
35    {
36        // never cache for admins
37        if (session::isAdmin())
38        {
39            return false;
40        }
41
42        if (config::get('is_reinforced') && count($_POST) == 0)
43        {
44            return true;
45        }
46
47        $cacheignore = explode(',', config::get('cache_ignore'));
48        if (KB_CACHE == 1 && count($_POST) == 0 && !in_array($page, $cacheignore))
49        {
50            return true;
51        }
52        return false;
53    }
54
55    function check($page)
56    {
57        if (cache::shouldCache())
58        {
59            if (!file_exists(KB_CACHEDIR.'/'.KB_SITE))
60            {
61                mkdir(KB_CACHEDIR.'/'.KB_SITE);
62            }
63            $cachefile = KB_CACHEDIR.'/'.KB_SITE.'/'.md5($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']).'.cache';
64
65            // cache is unlimited in reinforced mode
66            if (config::get('is_reinforced') && file_exists($cachefile))
67            {
68                ob_start('ob_gzhandler');
69                @readfile($cachefile);
70                ob_end_flush();
71                exit();
72            }
73            elseif (config::get('is_reinforced'))
74            {
75                global $smarty;
76                $smarty->assign('message', 'Note: This killboard has entered reinforced operation mode.');
77            }
78
79            $times = explode(',', config::get('cache_times'));
80            foreach ($times as $string)
81            {
82                $array = explode(':', $string);
83                $cachetimes[$array[0]] = $array[1];
84            }
85
86            if ($cachetimes[$page])
87            {
88                $cachetime = $cachetimes[$page];
89            }
90            else
91            {
92                $cachetime = 5;
93            }
94            $cachetime = $cachetime * 60;
95
96            $timestamp = ((@file_exists($cachefile))) ? @filemtime($cachefile) : 0;
97            if (time() - $cachetime < $timestamp)
98            {
99                ob_start('ob_gzhandler');
100                @readfile($cachefile);
101                ob_end_flush();
102                exit();
103            }
104            ob_start();
105        }
106    }
107
108    function generate()
109    {
110        if (cache::shouldCache())
111        {
112            $cachefile = KB_CACHEDIR.'/'.KB_SITE.'/'.md5($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']).'.cache';
113            $fp = @fopen($cachefile, 'w');
114            @fwrite($fp, ob_get_contents());
115            @fwrite($fp, '<!-- Generated from cache -->');
116            @fclose($fp);
117            ob_end_flush();
118        }
119    }
120}
121?>
Note: See TracBrowser for help on using the browser.