Перейти к публикации

Как вывести общее количество пользователей на главную?


Рекомендованные сообщения

Добрый день. Скажите пожалуйста Как можно вывести общее количество пользователей на главную страницу сайта?

Типа сделать такой блок на сайте

"Нас уже: ХХХХХ"

Заранее спасибо.

Ссылка на сообщение
Поделиться на других сайтах

$row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_users");

$stats_users = $row['count'];

$tpl->set('{allusers}', $stats_users);

и в шаблоне проставляешь {allusers}, но это + 1 запрос на каждое отображение страницы. Если есть большое желание, то можешь прикрутить кеш

Ссылка на сообщение
Поделиться на других сайтах

Если есть большое желание, то можешь прикрутить кеш

Без кэша, при хорошей посещаемости запросы вида "SELECT COUNT(*) as count" дадут бешеную нагрузку.

Ссылка на сообщение
Поделиться на других сайтах

Кеш делается элементарно в правке файла регистрации...

здесь не просили написать, оптимизщировать и разложить по полочкам, а просили способ как сделать - они его получили...

Ссылка на сообщение
Поделиться на других сайтах

Э...огромное вам спасибо. Но вы меня напугали сказав про нагрузку...потому что посещаемость как никак 4000 пользователей, про просмотры страницы вообще молчу...

Можете помочь с решением данной проблемы?

Ссылка на сообщение
Поделиться на других сайтах

Victim, есть множество решений вашей проблемы.

Вот два из них:

1. Записать значение в файл и читать его оттуда.

Плюс: уменьшаем количества запросов к БД на 1 для каждой загрузки страницы.

Минус: при изменении количества пользователей файл необходимо обновлять.

2. записать значение в сессию и читать его оттуда.

Плюс: уменьшаем количества запросов к БД на 1 для каждой загрузки страницы одним пользователем.

Минус: при посещении 4000 посетителей в сутки имеем 4000 лишних запросов в сутки.

Изменено пользователем lifestar
Ссылка на сообщение
Поделиться на других сайтах

Такс...я так предполагаю что вариант 1 это что то типа кеша. Но вот файл ручками что ли придется обновлять?? оО если ручками то это совсем не вариант...

Ссылка на сообщение
Поделиться на других сайтах

зачем ручками? система сама поменяет, но для этого нужно внести изменения по крайней мере в 3-х местах

Ссылка на сообщение
Поделиться на других сайтах

Хм...и много там менять? Мануальчик бы если вам не сложно...

PS Я вот думаю...у меня конечно выделенный сервер и не думаю что +1 запрос к базе будет критичным...но тем не менее наверное лучше перестраховаться...как думаете?

Изменено пользователем Victim
Ссылка на сообщение
Поделиться на других сайтах

Вообще думаю, что можно обойтись изменением всего одного файла (index.php или init.php - как удобнее). Просто обновлять количество пользователей раз в час, например. Лишних 24 запроса в сутки не критично.

Что-то вроде того

/************************/

$filename = ENGINE_DIR.'/cache/stats_users.tmp';

// Читаем кэш файл

if (file_exists($filename))

{

	//Сравниваем время кэша с текущем, если больше 3600 (час) - удаляем кэш

	if ((time() - 3600) > filemtime($filename))

	{

		$stats_users = FALSE;

		@unlink ($filename);

	}

	else $stats_users = @file_get_contents($filename);

} else $stats_users = FALSE;


if (!$stats_users)

{

	$row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_users");

	$stats_users = $row['count'];

	// Записываем значение в кэш

	$fp = fopen($filename, 'wb+');

	fwrite($fp, $stats_users);

	fclose($fp);

	@chmod($filename, 0755);		

}


$tpl->set('{allusers}', $stats_users);

/************************/

Изменено пользователем lifestar
Ссылка на сообщение
Поделиться на других сайтах

Спасибо вам огромное! Все отлично работает! Я очень рад! В копилку свою положу...пригодится

Ссылка на сообщение
Поделиться на других сайтах
  • 6 месяцев спустя...

COUNT(*) as count

запрос будет не легче, если сделать через id?

user_id, пк.

Физических подтверждений дать не могу, но в других скриптах * встречаю редко, всегда идёт подсчёт по пк (если такой есть), да и мне как-то советовали использовать всегда главный ключ, а не звёзлочку.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...