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

source: OpenPNE/branches/2_6/webapp/lib/util/cache.php @ 2395

Last change on this file since 2395 was 2395, checked in by takanashi, 15 years ago

#537:コミュニティ関連情報更新時、コミュニティ参加者全員のコミュニティに関連関連したfunction cacheを削除するように

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