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

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

Last change on this file since 8659 was 8659, checked in by shingo, 14 years ago

#2791:コメントの型情報を修正し、パラメータの並び順変更

File size: 11.3 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_commu_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    pne_cache_drop('db_commu_c_commu_topic_comment_list4c_member_id', $c_member_id, 5);
166    $c_member_id = (string)$c_member_id;
167    pne_cache_drop('db_commu_c_commu_list_lastupdate4c_member_id', $c_member_id, 5);
168    pne_cache_drop('db_commu_c_commu_list4c_member_id_2', $c_member_id, 9);
169    pne_cache_drop('db_commu_c_commu_topic_comment_list4c_member_id', $c_member_id, 5);
170}
171
172
173/**
174 * 紹介文取得のfunction cacheを削除する
175 */
176function cache_drop_c_friend_intro($c_member_id)
177{
178    $c_member_id = (int)$c_member_id;
179    pne_cache_drop('db_friend_c_friend_intro_list4c_member_id', $c_member_id, 5);
180    pne_cache_drop('db_friend_c_friend_comment4c_member_id', $c_member_id);
181    $c_member_id = (string)$c_member_id;
182    pne_cache_drop('db_friend_c_friend_intro_list4c_member_id', $c_member_id, 5);
183    pne_cache_drop('db_friend_c_friend_comment4c_member_id', $c_member_id);
184}
185
186/**
187 * プロフィール取得のfunction cacheを削除する
188 * 旧関数名を呼んでいる限り引数の省略はないのでこれで暫定的な対応とする
189 */
190function cache_drop_c_member_profile($c_member_id)
191{
192    $c_member_id = (int)$c_member_id;
193    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id);
194    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false);
195    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'public');
196    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'friend');
197    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'private');
198    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'public');
199    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'friend');
200    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'private');
201    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true);
202    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'public');
203    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'friend');
204    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'private');
205    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'public');
206    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'friend');
207    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'private');
208    pne_cache_drop('db_member_c_profile_list');
209    $c_member_id = (string)$c_member_id;
210    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id);
211    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false);
212    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'public');
213    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'friend');
214    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, false, 'private');
215    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'public');
216    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'friend');
217    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, false, true, 'private');
218    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true);
219    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'public');
220    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'friend');
221    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, false, 'private');
222    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'public');
223    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'friend');
224    pne_cache_drop('db_member_c_member4c_member_id', $c_member_id, true, true, 'private');
225}
226
227/**
228 * お気に入り関連のfunction cacheを削除する
229 */
230function cache_drop_c_bookmark($c_member_id)
231{
232    $c_member_id = (int)$c_member_id;
233    pne_cache_drop('db_bookmark_member_list', $c_member_id, 9);
234    $c_member_id = (string)$c_member_id;
235    pne_cache_drop('db_bookmark_member_list', $c_member_id, 9);
236}
237
238/**
239 * 日記のfunction cacheを削除する
240 *
241 * @param int $c_member_id        ログインしているメンバーID
242 * @param int $target_c_member_id 書き込み先のメンバーID
243 */
244function cache_drop_c_diary($c_member_id, $target_c_member_id)
245{
246    $target_c_member_id = (int)$target_c_member_id;
247    $c_member_id = (int)$c_member_id;
248    pne_cache_drop('db_diary_get_c_diary_list4c_member_id', $target_c_member_id, 5, $c_member_id);
249    pne_cache_drop('p_h_home_c_diary_friend_list4c_member_id', $c_member_id, 5);  //最新日記フィード
250    $target_c_member_id = (string)$target_c_member_id;
251    $c_member_id = (string)$c_member_id;
252    pne_cache_drop('db_diary_get_c_diary_list4c_member_id', $target_c_member_id, 5, $c_member_id);
253    pne_cache_drop('p_h_home_c_diary_friend_list4c_member_id', $c_member_id, 5);  //最新日記フィード
254    $target_c_member_id = (int)$target_c_member_id;
255    $c_member_id = (string)$c_member_id;
256    pne_cache_drop('db_diary_get_c_diary_list4c_member_id', $target_c_member_id, 5, $c_member_id);
257    $target_c_member_id = (string)$target_c_member_id;
258    $c_member_id = (int)$c_member_id;
259    pne_cache_drop('db_diary_get_c_diary_list4c_member_id', $target_c_member_id, 5, $c_member_id);
260}
261?>
Note: See TracBrowser for help on using the repository browser.