Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Подскажите как отредактировать скрипт, отображающий количество юзеров на сайте
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (2): [1] 2 »   

> Описание: или где скачать нормальный
KreZ
Отправлено: 29 Октября, 2006 - 13:55:45
Post Id



Full Member


Покинул форум
Сообщений всего: 162
Дата рег-ции: Авг. 2005  
Откуда: Украина, Киев

Карма 1

[+]


Имеется у меня вот такой скрипт
CODE:
<?php
$remote = $_SERVER["REMOTE_ADDR"];
$file = "online.txt"; // файл лога посетителей
$timeoutseconds = 300; // how long to keep track of users for in seconds
$timestamp = time();
$timeout = ($timestamp-$timeoutseconds);
$fp = fopen("$file", "a+");
$write = $remote."||".$timestamp."\n";
fwrite($fp, $write);
fclose($fp);
$online_array = array();
$file_array = file($file);
foreach($file_array as $newdata){
list($ip, $time) = explode("||", $newdata);
if($time >= $timeout){
array_push($online_array, $ip);
}
}
$online_array = array_unique($online_array);
$online = count($online_array);
if($online == "1"){
echo "1"; // выводится, если на сайте один человек
}else{
echo "$online"; // выводится, если на сайте несколько человек
}
?>


Но у него есть один недостаток: он ведет лог. Скидывает все IP в текстовый файл, а при большом количестве хостов этот файл может достигать нескольких Мб за неделю.
Поскольку в РНР я пока еще не разбераюсь, то отредактировать его безболезненно не могу.
Если просто удалить из скрипта строки
CODE:
$fp = fopen("$file", "a+");
$write = $remote."||".$timestamp."\n";
fwrite($fp, $write);
fclose($fp);

то он отображает количество юзеров неверно.

Может кто разбирается в РНР и знает как отучить скрипт от лога без последствий или где скачать скрипт, не ведущий лог?
 
 Top
TvoyWeb Администратор
Отправлено: 29 Октября, 2006 - 21:33:30
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




KreZ
Удалять этот код нельзя, и без записи в лог тоже не получится. Другое дело что нужно удалять старые записи из лога чтобы там оставались только записи за определенный период, то есть за то время за которое показывается сколько пользователей на сайте. Например за последние 10 минут.
 
 Top
KreZ
Отправлено: 30 Октября, 2006 - 01:57:05
Post Id



Full Member


Покинул форум
Сообщений всего: 162
Дата рег-ции: Авг. 2005  
Откуда: Украина, Киев

Карма 1

[+]


А как это сделать не подскажите?
 
 Top
TvoyWeb Администратор
Отправлено: 30 Октября, 2006 - 02:10:42
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




KreZ
У меня сейчас совсем времени нет, сорри. Подожди ребята счас подтянутся. помогут.
 
 Top
KreZ
Отправлено: 30 Октября, 2006 - 05:53:34
Post Id



Full Member


Покинул форум
Сообщений всего: 162
Дата рег-ции: Авг. 2005  
Откуда: Украина, Киев

Карма 1

[+]


Чисто интуитивно могу предположить значения функций:
CODE:
$fp = fopen("$file", "a+"); //открывает файл
$write = $remote."||".$timestamp."\n"; //указывает какие данные запиывать в файл
fwrite($fp, $write); //записывает эти данные
fclose($fp); //закрывает файл

Тогда у меня есть вариант. Можно добавить после этого еще код, который очистит файл. Что-то вроде такого:

$fp = fopen("$file", "a+"Подмигивание;
тут функция, удаляющая данные из файла
fclose($fp);

Но я не знаю что конкретно писать и будет ли оно работать. Что скажите?
 
 Top
TvoyWeb Администратор
Отправлено: 30 Октября, 2006 - 06:07:44
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




Попробуй так. (навскидку. Не проверял)
CODE:
<?php
$remote = $_SERVER["REMOTE_ADDR"];
$file = "online.txt"; // файл лога посетителей
$timeoutseconds = 300; // how long to keep track of users for in seconds
$timestamp = time();
$timeout = ($timestamp-$timeoutseconds);
$online_array = array();
$file_array = file($file);

foreach ($file_array as $key => $newdata) {
list($ip, $time) = explode("||", $newdata);
if ($time >= $timeout){
array_push($online_array, $ip);
} else {
unset($file_array[$key]);
}
}
$online_array = array_unique($online_array);
$online = count($online_array);
$fp = fopen("$file", "a+");
$file_array[] = $remote."||".$timestamp."\n";
$write = implode("",$file_array);
fwrite($fp, $write);
fclose($fp);
if ($online == "1") {
echo "1"; // выводится, если на сайте один человек
} else {
echo "$online"; // выводится, если на сайте несколько человек
}
?>
 
 Top
KreZ
Отправлено: 30 Октября, 2006 - 07:49:06
Post Id



Full Member


Покинул форум
Сообщений всего: 162
Дата рег-ции: Авг. 2005  
Откуда: Украина, Киев

Карма 1

[+]


Недовольство, огорчение Выдает ошибку.
 
 Top
ETC Администратор
Отправлено: 30 Октября, 2006 - 08:23:07
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




KreZ
А текст ошибки приводить не обязательно?
 
 Top
KreZ
Отправлено: 30 Октября, 2006 - 09:10:43
Post Id



Full Member


Покинул форум
Сообщений всего: 162
Дата рег-ции: Авг. 2005  
Откуда: Украина, Киев

Карма 1

[+]


Online:
Parse error: parse error in z:\home\192.168.5.32\www\online.php on line 9
 
 Top
TvoyWeb Администратор
Отправлено: 30 Октября, 2006 - 10:07:23
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




KreZ
Попробуй теперь. Не знаю как там одна перменная затесалась Улыбка.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 4 (гостей: 4, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0494]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33