ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/trunk/webapp/lib/util/cache.php @ 4933

Last change on this file since 4933 was 4933, checked in by ogawa, 15 years ago

#1777:ソースコード内のcopyright表記の年を2008に変更する

File size: 9.9 KB
Line 
1<?php
2/**
3 * @copyright 2005-2008 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7function &get_cache_lite_function()
8{
9    static $instance;
10    if (empty($instance)) {
11        if (OPENPNE_USE_FUNCTION_CACHE_MEMCACHE) {
12            include_once 'OpenPNE/Cache.php';
13            $instance = new OpenPNE_Cache_Function('memcache', $GLOBALS['_OPENPNE_MEMCACHE_LIST']['func_cache']);
14        } else {
15            include_once 'Cache/Lite/Function.php';
16            $options = array(
17                'cacheDir' => OPENPNE_VAR_DIR . '/function_cache/',
18                'hashedDirectoryLevel' => 2,
19                'hashedDirectoryUmask' => 0777,
20            );
21            $instance = new Cache_Lite_Function($options);
22        }
23    }
24    return $instance;
25}
26
27/**
28 * call function cache
29 */
30function pne_cache_call()
31{
32    $arg_list = func_get_args();
33    $lifetime = array_shift($arg_list);
34
35    if (OPENPNE_USE_FUNCTION_CACHE) {
36        $cache =& get_cache_lite_function();
37        $cache->setOption('lifeTime', intval($lifetime));
38        return call_user_func_array(array(&$cache, 'call'), $arg_list);
39    } else {
40        $function = array_shift($arg_list);
41        return call_user_func_array($function, $arg_list);
42    }
43}
44
45/**
46 * drop function cache
47 */
48function pne_cache_drop()
49{
50    $arg_list = func_get_args();
51   
52    if (OPENPNE_USE_FUNCTION_CACHE) {
53        $cache =& get_cache_lite_function();
54        return call_user_func_array(array(&$cache, 'drop'), $arg_list);
55    } else {
56        return true;
57    }
58}
59
60/***
61 * 再帰的に関数をコールする pne_cache_call
62 */
63function pne_cache_recursive_call($lifetime, $function, $funcarg)
64{
65    if (OPENPNE_USE_FUNCTION_CACHE) {
66        array_unshift($funcarg, $function);
67        $cache =& get_cache_lite_function();
68        $cache->setOption('lifeTime', intval($lifetime));
69        return call_user_func_array(array(&$cache, 'call'), $funcarg);
70    } else {
71        return call_user_func_array($function, $funcarg);
72    }
73}
74
75//---
76
77/**
78 * メンバー情報取得関連のfunction cacheを削除する
79 */
80function cache_drop_c_member($c_member_id)
81{
82    $c_member_id = (int)$c_member_id;
83    pne_cache_drop('db_friend_c_friend_id_list4c_member_id', $c_member_id, 9);  //フレンドリスト
84    pne_cache_drop('db_friend_c_friend_list_random4c_member_id', $c_member_id, 5);
85    pne_cache_drop('p_h_home_c_diary_friend_list4c_member_id', $c_member_id, 5);  //最新日記フィード
86    $c_member_id = (string)$c_member_id;
87    pne_cache_drop('db_friend_c_friend_id_list4c_member_id', $c_member_id, 9);  //フレンドリスト
88    pne_cache_drop('db_friend_c_friend_list_random4c_member_id', $c_member_id, 5);
89    pne_cache_drop('p_h_home_c_diary_friend_list4c_member_id', $c_member_id, 5);  //最新日記フィード
90
91    //誕生日フィード
92    include_once 'Calendar/Week.php';
93
94    $Week = new Calendar_Week(date('Y'), date('m'), date('d'), 0);
95    $Week->build();
96    while ($Day = $Week->fetch()) {
97        $m = $Day->thisMonth();
98        $d = $Day->thisDay();
99        $c_member_id = (int)$c_member_id;
100        pne_cache_drop('db_member_birth4c_member_id', $m, $d, $c_member_id);
101        $c_member_id = (string)$c_member_id;
102        pne_cache_drop('db_member_birth4c_member_id', $m, $d, $c_member_id);
103    }
104
105    cache_drop_c_friend_intro($c_member_id);  //紹介文
106}
107
108/**
109 * コミュニティ情報取得関連のfunction cacheを削除する
110 */
111function cache_drop_c_commu($c_commu_id)
112{
113    $c_commu_id = (int)$c_commu_id;
114    pne_cache_drop('db_commu_c_commu4c_commu_id_k',$c_commu_id);
115    pne_cache_drop('db_commu_c_commu_member_list_random4c_commu_id', $c_commu_id, 5);
116    pne_cache_drop('db_commu_c_commu_member_list4c_commu_id', $c_commu_id, 9);
117    pne_cache_drop('db_commu_c_commu4c_commu_id2', $c_commu_id);
118    $c_commu_id = (string)$c_commu_id;
119    pne_cache_drop('db_commu_c_commu4c_commu_id_k',$c_commu_id);
120    pne_cache_drop('db_commu_c_commu_member_list_random4c_commu_id', $c_commu_id, 5);
121    pne_cache_drop('db_commu_c_commu_member_list4c_commu_id', $c_commu_id, 9);
122    pne_cache_drop('db_commu_c_commu4c_commu_id2', $c_commu_id);
123
124    $c_commu_topic_list = db_commu_new_topic_comment4c_commu_id($c_commu_id, 7);
125    $c_commu_event_list = db_commu_new_topic_comment4c_commu_id($c_commu_id, 7, 1);
126    $c_commu_bbs_list = array_merge($c_commu_topic_list, $c_commu_event_list);
127
128    foreach ($c_commu_bbs_list as $c_commu_topic_id) {
129        $c_commu_topic_id = (int)$c_commu_topic_id;
130        cache_drop_c_commu_topic($c_commu_topic_id);
131        $c_commu_topic_id = (string)$c_commu_topic_id;
132        cache_drop_c_commu_topic($c_commu_topic_id);
133    }
134
135    $c_commu_member_total_num = _db_count_c_commu_member_list4c_commu_id($c_commu_id);
136    $c_commu_member_list = db_commu_c_member_list4c_commu_id($c_commu_id, 1, $c_commu_member_total_num);
137    foreach ($c_commu_member_list[0] as $c_member) {
138        cache_drop_c_commu_list4c_member_id($c_member['c_member_id']);
139    }
140}
141
142/**
143 * コミュニティトピック情報取得関連のfunction cacheを削除する
144 */
145function cache_drop_c_commu_topic($c_commu_topic_id)
146{
147    $c_commu_topic_id = (int)$c_commu_topic_id;
148    pne_cache_drop('db_commu_new_topic_comment4c_commu_id', $c_commu_topic_id, 7);
149    pne_cache_drop('db_commu_new_topic_comment4c_commu_id', $c_commu_topic_id, 7, 0);
150    pne_cache_drop('db_commu_new_topic_comment4c_commu_id', $c_commu_topic_id, 7, 1);
151    $c_commu_topic_id = (string)$c_commu_topic_id;
152    pne_cache_drop('db_commu_new_topic_comment4c_commu_id', $c_commu_topic_id, 7);
153    pne_cache_drop('db_commu_new_topic_comment4c_commu_id', $c_commu_topic_id, 7, 0);
154    pne_cache_drop('db_commu_new_topic_comment4c_commu_id', $c_commu_topic_id, 7, 1);
155}
156
157/**
158 * c_memberに関連したコミュニティ情報取得関連のfunction cacheを削除する
159 */
160function cache_drop_c_commu_list4c_member_id($c_member_id)
161{
162    $c_member_id = (int)$c_member_id;
163    pne_cache_drop('db_commu_c_commu_list_lastupdate4c_member_id', $c_member_id, 5);
164    pne_cache_drop('db_commu_c_commu_list4c_member_id_2', $c_member_id, 9);
165    $c_member_id = (string)$c_member_id;
166    pne_cache_drop('db_commu_c_commu_list_lastupdate4c_member_id', $c_member_id, 5);
167    pne_cache_drop('db_commu_c_commu_list4c_member_id_2', $c_member_id, 9);
168}
169
170
171/**
172 * 紹介文取得のfunction cacheを削除する
173 */
174function cache_drop_c_friend_intro($c_member_id)
175{
176    $c_member_id = (int)$c_member_id;
177    pne_cache_drop('db_friend_c_friend_intro_list4c_member_id', $c_member_id, 5);
178    pne_cache_drop('db_friend_c_friend_comment4c_member_id', $c_member_id);
179    $c_member_id = (string)$c_member_id;
180    pne_cache_drop('db_friend_c_friend_intro_list4c_member_id', $c_member_id, 5);
181    pne_cache_drop('db_friend_c_friend_comment4c_member_id', $c_member_id);
182}
183
184/**
185 * プロフィール取得のfunction cacheを削除する
186 * 旧関数名を呼んでいる限り引数の省略はないのでこれで暫定的な対応とする
187 */
188function cache_drop_c_member_profile($c_member_id)
189{
190    $c_member_id = (int)$c_member_id;
191    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id);
192    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false);
193    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'public');
194    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'friend');
195    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'private');
196    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'public');
197    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'friend');
198    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'private');
199    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true);
200    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'public');
201    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'friend');
202    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'private');
203    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'public');
204    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'friend');
205    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'private');
206    pne_cache_drop('db_member_c_profile_list');
207    $c_member_id = (string)$c_member_id;
208    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id);
209    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false);
210    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'public');
211    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'friend');
212    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'private');
213    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'public');
214    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'friend');
215    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'private');
216    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true);
217    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'public');
218    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'friend');
219    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'private');
220    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'public');
221    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'friend');
222    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'private');
223}
224
225/**
226 * お気に入り関連のfunction cacheを削除する
227 */
228function cache_drop_c_bookmark($c_member_id)
229{
230    $c_member_id = (int)$c_member_id;
231    pne_cache_drop('db_bookmark_member_list', $c_member_id, 9);
232    $c_member_id = (string)$c_member_id;
233    pne_cache_drop('db_bookmark_member_list', $c_member_id, 9);
234}
235?>
Note: See TracBrowser for help on using the repository browser.