et('session.use_cookies', 'On'); ini_set('session.use_only_cookies', 'On'); ini_set('session.cookie_domain', ''); ini_set('session.cookie_path', ''); // 为空则表示当前目录和子目录 ini_set('session.cookie_secure', 'Off'); // 打开后,只有通过 https 才有效。 ini_set('session.cookie_lifetime', 8640000); ini_set('session.cookie_httponly', 'On'); // 打开后 js 获取不到 HTTP 设置的 cookie, 有效防止 XSS,这个对于安全很重要,除非有 BUG,否则不要关闭。 ini_set('session.gc_maxlifetime', $conf['online_hold_time']); // 活动时间 $conf['online_hold_time'] ini_set('session.gc_probability', 1); // 垃圾回收概率 = gc_probability/gc_divisor ini_set('session.gc_divisor', 500); // 垃圾回收时间 5 秒,在线人数 * 10 session_set_save_handler('sess_open', 'sess_close', 'sess_read', 'sess_write', 'sess_destroy', 'sess_gc'); // register_shutdown_function 会丢失当前目录,需要 chdir(APP_PATH) // 这个比须有,否则 ZEND 会提前释放 $db 资源 register_shutdown_function('session_write_close'); session_start(); $sid = session_id(); //$_SESSION['uid'] = $g_session['uid']; //$_SESSION['fid'] = $g_session['fid']; //echo "sess_start() sid: $sid
\r\n"; //print_r(db_find('session')); return $sid; } function online_count() { return db_count('session'); } function online_find_cache() { return db_find('session'); } function online_list_cache() { $onlinelist = cache_get('online_list'); if($onlinelist === NULL) { $onlinelist = db_find('session', array('uid'=>array('>'=>0)), array('last_date'=>-1), 1, 500); foreach($onlinelist as &$online) { $user = user_read_cache($online['uid']); $online['username'] = $user['username']; $online['gid'] = $user['gid']; $online['ip_fmt'] = long2ip($online['ip']); $online['last_date_fmt'] = date('Y-n-j H:i', $online['last_date']); } cache_set('online_list', $onlinelist, 300); } return $onlinelist; } ?>