1ответ(ов) в теме
Всем привет!
Для buddypress есть плагин, который отображает статус онлайна пользователей, вот его кусок кода:
function update_online_users_status() { if ( is_user_logged_in() ) { if ( ( $logged_in_users = get_transient( 'online' ) ) === false ) $logged_in_users = array(); $current_user = wp_get_current_user(); $current_user = $current_user->ID; $current_time = current_time( 'timestamp' ); if ( !isset( $logged_in_users[$current_user] ) || ( $logged_in_users[$current_user] < ( $current_time - ( 5 * 60 ) ) ) ) { $logged_in_users[$current_user] = $current_time; set_transient( 'online', $logged_in_users, 30 * 60 ); } } } add_action( 'wp', 'update_online_users_status' ); function is_user_online( $user_id ) { $logged_in_users = get_transient( 'online' ); return isset( $logged_in_users[$user_id] ) && ( $logged_in_users[$user_id] > ( current_time( 'timestamp' ) - ( 5 * 60 ) ) ); }
суть в том, что создается временная опция, куда записываются таймкоды пользователей в массив
Вопрос в следующем:
Если пользователей больше 1000, будет ли нагрузка на сайт при получении get_transient
для каждого пользователя?
И сколько лучше устанавливать времени к set_transient
для удаления этой временной опции?
Fatal error: Uncaught Error: Call to undefined function ads_get_box() in /var/www/www-root/data/www/codeseller.ru/wp-content/themes/codeseller/includes/adv.php:15 Stack trace: #0 /var/www/www-root/data/www/codeseller.ru/wp-includes/class-wp-hook.php(310): add_adv_content_after_first_forum_post('pfm-single-post...', '/var/www/www-ro...') #1 /var/www/www-root/data/www/codeseller.ru/wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters('', Array) #2 /var/www/www-root/data/www/codeseller.ru/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #3 /var/www/www-root/data/www/codeseller.ru/wp-content/plugins/wp-recall/functions/files.php(57): do_action('rcl_include_tem...', 'pfm-single-post...', '/var/www/www-ro...') #4 /var/www/www-root/data/www/codeseller.ru/wp-content/plugins/wp-recall/add-on/prime-forum/functions-templates.php(117): rcl_include_template('pfm-single-post...', '/var/www/www-ro...') #5 /var/www/www-root/data/www/codeseller.ru/wp-content/plugins/wp-recall/add-on/prime-forum/themes/prime-first/templates/pfm in /var/www/www-root/data/www/codeseller.ru/wp-content/themes/codeseller/includes/adv.php on line 15