// 频道和全局置顶主题 foreach ($arrlist as $val) { if (in_array($val['fid'], $fids) && 2 == $val['sticky']) { $sticky2[$val['tid']] = $val; } elseif (3 == $val['sticky']) { $sticky3[$val['tid']] = $val; } } } else { // 栏目/上级频道/全局置顶 foreach ($arrlist as $val) { if ($forum['fid'] == $val['fid'] && 1 == $val['sticky']) { $sticky1[$val['tid']] = $val; } elseif (in_array($val['fid'], $fids) && 2 == $val['sticky']) { $sticky2[$val['tid']] = $val; } elseif (3 == $val['sticky']) { $sticky3[$val['tid']] = $val; } } } $sticky3 = empty($sticky3) ? array() : array_multisort_key($sticky3, 'create_date', FALSE, 'tid'); $sticky2 = empty($sticky2) ? array() : array_multisort_key($sticky2, 'create_date', FALSE, 'tid'); $sticky1 = empty($sticky1) ? array() : array_multisort_key($sticky1, 'create_date', FALSE, 'tid'); $arr = $sticky3 + $sticky2 + $sticky1; return $arr; } // 全部置顶缓存 function sticky_thread_find_cache() { global $conf; $key = 'sticky_thread_list'; static $cache = array(); // 用静态变量只能在当前 request 生命周期缓存,跨进程需要再加一层缓存:redis/memcached/xcache/apc if (isset($cache[$key])) return $cache[$key]; if ('mysql' == $conf['cache']['type']) { $arr = sticky_thread__find(array(), array('tid' => -1), 1, 2000); } else { $arr = cache_get($key); if (NULL === $arr) { $arr = sticky_thread__find(array(), array('tid' => -1), 1, 2000); $arr AND cache_set($key, $arr, 1800); } } $cache[$key] = $arr ? $arr : NULL; return $cache[$key]; } ?>u