|
|
|
| Привет, есть скрипт который отображает сколько пользователей сейчас на странице:
<?php
$_usdata="log/online.txt";
$_ustime_online=time();
$_uspast_time=time()-600;
$_usreaddata=fopen($_usdata,"r");
$_usdata_array=file($_usdata);
fclose($_usreaddata);
if (getenv('HTTP_X_FORWARDED_FOR'))
$_ususer_online = getenv('HTTP_X_FORWARDED_FOR');
else
$_ususer_online = getenv('REMOTE_ADDR');
$_usd=count($_usdata_array);
for($_usi=0;$_usi<$_usd;$_usi++)
{
list($_uslive_user,$_uslast_time)=explode("::","$_usdata_array[$_usi]");
if($_uslive_user!=""&&$_uslast_time!=""):
if($_uslast_time<$_uspast_time):
$_uslive_user="";
$_uslast_time="";
endif;
if($_uslive_user!=""&&$_uslast_time!="")
{
if($_ususer_online==$_uslive_user)
{
$_usonline_array[]="$_ususer_online::$_ustime_online\r\n";
}
else
$_usonline_array[]="$_uslive_user::$_uslast_time";
}
endif;
}
if(isset($_usonline_array)):
foreach($_usonline_array as $_usi=>$_usstr)
{
if($_usstr=="$_ususer_online::$_ustime_online\r\n")
{
$_usok=$_usi;
break;
}
}
foreach($_usonline_array as $_usj=>$_usstr)
{
if($_usok==$_usj) { $_usonline_array[$_usok]="$_ususer_online::$_ustime_online\r\n"; break;}
}
endif;
$_uswritedata=fopen($_usdata,"w");
flock($_uswritedata,2);
if($_usonline_array=="") $_usonline_array[]="$_ususer_online::$_ustime_online\r\n";
foreach($_usonline_array as $_usstr)
fputs($_uswritedata,"$_usstr");
flock($_uswritedata,3);
fclose($_uswritedata);
$_usreaddata=fopen($_usdata,"r");
$_usdata_array=file($_usdata);
fclose($_usreaddata);
$_usonline=count($_usdata_array);
echo "На сайте: $_usonline чел.";
?>
|
как возможно сделать чтобы этот скрипт собирал сколько польщователей сидит на 2-х страницах и выводил сложеное число?...
К примеру, у меня скрипт стоит на главной, он пишет что тут 15 польщователей...
А мне нужно чтобы он плюсовал с количеством пользователей на другой страницу... на другой к примеру сидит 5 пользователей....
Нужно чтобы он вывел: На сайте: 20 польщователей...
Размещая етот скрипт на этих 2-х страницах и указывая один лог файл в котором хранится сколько польщователей... такое не прокатит.. :(
заранее спаибо, снова всех запутал :) | |
|
|
|
|
|
|
|
для: ZetRider
(08.02.2008 в 20:44)
| | > есть скрипт который отображает сколько пользователей сейчас на странице
Я не вижу тут никакой привязки к странице. Данные сохраняются в "log/online.txt". Если код на нескольких страницах один и тот же, то это и есть подсчет онлайна по всем этим страницам, а не по каждой в отдельности.
P.S. Не используйте if( condition ): ... end if; Это затрудняет чтение кода.
UPD.
> Размещая етот скрипт на этих 2-х страницах и указывая один лог файл в котором хранится сколько польщователей... такое не прокатит..
Тогда нужно считать количество строк в нескольких файлах.
<?php
// ...
$files = array('file1.cnt', 'file2.cnt');
for($i = 0, $online = 0; $i < count($files); $i++)
{
$online += count(file($files[$i]));
}
echo "Online: " . $online . "<br />\r\n";
?>
|
Хотя подобное делается гораздо лучше с помощью СУБД. | |
|
|
|