PHP – счетчик посетителей онлайн

У меня есть следующий код для подсчета посетителей на моем сайте PHP. Он отлично работает на моей локальной машине разработки с использованием WampServer, но когда я загрузил свои файлы на мою учетную запись хостинга для тестирования, я понял, что он работает неправильно.

Я получаю действительно большое количество чисел, а также заметил, что сеанс никогда не удаляется, поэтому они просто продолжают накапливаться.

Это простой счетчик сеансов. Есть ли лучший способ сделать это? Может кто-нибудь, пожалуйста, покажите мне или назовите меня какой-нибудь статьей? Спасибо!

<?php //------------------------------------------------------------ // VISITORS ONLINE COUNTER //------------------------------------------------------------ if (!isset($_SESSION)) { session_start(); } function visitorsOnline() { $session_path = session_save_path(); $visitors = 0; $handle = opendir($session_path); while(( $file = readdir($handle) ) != false) { if($file != "." && $file != "..") { if(preg_match('/^sess/', $file)) { $visitors++; } } } return $visitors; } ?> 

Related of "PHP – счетчик посетителей онлайн"

Если вы хотите использовать собственную внутреннюю систему подсчета, я бы предложил, сохраняя такую ​​информацию, связанную с веб-сайтом в базе данных. И обновляйте запись каждый раз, когда пользователь просматривает веб-сайт.

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

Лучший (бесплатный) способ подсчета посетителей находится здесь: http://www.google.com/analytics .

Если вам нужны больше данных в реальном времени (например, в настоящее время активные пользователи), попробуйте: http://www.woopra.com/

Если вы настроились на то, что на вашем сайте активен ваш собственный код, я бы сделал это с полем «последнее действие» в вашей базе данных в таблице пользователей. Вы сможете выполнить эквивалентный запрос PHP для SELECT COUNT(id) FROM Users WHERE #{Time.now} > #{15.minutes.ago}

Если вы хотите также отслеживать анонимных пользователей, а не использовать таблицу «Пользователи», создайте таблицу с IP-адресом посетителя в качестве поля идентификации и используйте тот же метод, о котором говорилось выше.

Если проблема на рабочем сервере заключается в том, что сеансы просто не удаляются, у вас есть два варианта:

  • Уменьшите время окончания сеанса на установке PHP.
  • Изучите последнюю измененную дату файлов сеанса и пересчитайте их только до общей суммы, если они были изменены в течение определенного периода времени.

Хм, я не уверен, что чтение файлов сеанса в сеансе dir – лучший метод.

Почему бы не написать запись в таблице db для каждой загрузки страницы. Затем прочитайте, что подсчитывает количество уникальных пользователей за последние x минут?

Это звучит db, но если ваш сайт не занят, я не вижу проблемы.