Домой WordPress WordPress: Вопросы и ответы Есть ли нагрузка от get_transient?
1ответ(ов) в теме
Tesessssss
не в сети 4 года
На сайте с 05.05.2014
Участник
Тем 5
Сообщения 12
1
14:35

Всем привет!
Для 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 для удаления этой временной опции?

0
Вы не имеете права на публикацию сообщений в этой теме