OSDN Git Service

Ticket処理を追加
[nucleus-jp/nucleus-plugins.git] / trunk / NP_Blacklist / blacklist / cache_eaccelerator.php
1 <?php
2
3 /**
4 * cache_eaccelerator.php ($Revision: 1.3 $)
5
6 * by hsur ( http://blog.cles.jp/np_cles )
7 * $Id: cache_eaccelerator.php,v 1.3 2006-10-17 15:37:58 hsur Exp $
8 */
9
10 function pbl_ipcache_write(){
11         $key = sprintf("BL%u", ip2long(serverVar('REMOTE_ADDR')));
12         if( ! rand(0,19) ) pbl_ipcache_gc();
13         
14         // eAccelerator Cache
15         eaccelerator_lock($key);
16         eaccelerator_put($key, true, NP_BLACKLIST_CACHE_LIFE);
17         eaccelerator_unlock($key);
18 }
19
20 function pbl_ipcache_read(){
21         $key = sprintf("BL%u", ip2long(serverVar('REMOTE_ADDR')));
22         // eAccelerator Cache
23         if( eaccelerator_get($key) ){
24                 return true;    
25         }
26         return false;
27 }
28
29 function pbl_ipcache_gc(){
30         $now = time();
31         $lastGc = -1;
32         
33         // eAccelerator Cache
34         $lastGc = intval(eaccelerator_get(NP_BLACKLIST_CACHE_GC_TIMESTAMP));
35         if($now - $lastGc > NP_BLACKLIST_CACHE_GC_INTERVAL){
36                 pbl_log("GC started.");
37                 eaccelerator_gc();
38                 $lastGc = $now;
39                 eaccelerator_lock(NP_BLACKLIST_CACHE_GC_TIMESTAMP);
40                 eaccelerator_put(NP_BLACKLIST_CACHE_GC_TIMESTAMP, $lastGc, NP_BLACKLIST_CACHE_GC_TIMESTAMP_LIFE);
41                 eaccelerator_unlock(NP_BLACKLIST_CACHE_GC_TIMESTAMP);
42         }
43         
44         return $lastGc;
45 }
46 ?>