PDA

View Full Version : مدیریت کاربران آنلاین



ICEMAN
جمعه 31 خرداد 1392, 14:49 عصر
سلام
من دارم یک پورتال ساده Hotspot مینویسم من میخوام لیست همه کاربرانی که الان متصل هستن رو داشته باشم به همین منظور یک سری function ساده برای نوشتن اسم کاربرانی که connect میشن رو تو این File مینویسم و وقتی کسی Disconnect شد اسمش رو از File حذف میکنم.
تعداد کاربر ها حدوده ۴۰۰ تا ۵۰۰ نفره.
من زیاد PHP کار نکردم کد رو میزارم خواش میکنم اگه مشکلی دارش میبینید راهنمایی کنید


function getline( $fp, $delim )
{
$result = "";
while( !feof($fp) )
{
$tmp = fgetc( $fp );
if( $tmp == $delim )
return $result;
$result .= $tmp;
}
return $result;
}

function AddQueueManager($qUser, $qMac, $apMac, $qIp, $qTimestamp)
{
$qmgr= "qmgr.txt";
$FILE= fopen($qmgr, 'a');
if(!$FILE)
{
echo "ERRAdd: Cannot open file!";
return -1;
}
$str= "(".$qUser.")"."\t". "[".$qMac."]" ."\t".$apMac."\t".$qIp."\t".$qTimestamp."\t|"."\r\n";
fwrite($FILE, $str);

fclose($FILE);
return 0;
}

function FindQueueManager($qUser)
{
$FILE= fopen("qmgr.txt", 'r');
if(!$FILE)
{
echo "ERRFind: Cannot open file!";
return -1;
}
while(!feof($FILE))
{
$str = getline($FILE, '|');

//if(strstr($str, $qUser))
if(strstr(strtolower($str), strtolower($qUser)))
{
fclose($FILE);
return getMac($str);
}
}

fclose($FILE);
return 0;
}

function DeleteQueueManager($qUser)
{
$FILE= fopen("qmgr.txt", 'r');
$tmp= fopen("qTemp.txt",'w');
if(!$FILE)
{
echo "ERRDel: Cannot open file!";
return -1;
}
if(!$tmp)
{
echo "ERRDel: Cannot open tmp file!";
return -2;
}
while(!feof($FILE))
{
$str = getline($FILE, '|');
//if(strstr($str, $qUser))
if(strstr(strtolower($str), strtolower($qUser)))
{
continue;
}
else
{
if(strlen($str) > 3)
{
fwrite($tmp, $str.'|');
}
}
}
fclose($FILE);
fclose($tmp);

unlink("qmgr.txt");
rename("qTemp.txt", "qmgr.txt");
return 0;
}


ممنون

ICEMAN
پنج شنبه 21 فروردین 1393, 12:16 عصر
و البته که استفاده راه حل بهتریست :بامزه:

saeedvir
پنج شنبه 21 فروردین 1393, 23:55 عصر
چرا از دیتابیس استفاده نمیکنید ؟

plague
جمعه 22 فروردین 1393, 19:23 عصر
نظری در باره ماهیت کارت ندارم ! (چون کلا با php نمیشه دقیقا فهمید که کی آنلاین هست و کی آفلاین )
ولی برای زخیره کردن داده ها توی فایل text از json استفاده کن اینجوری دیگه ریجکس و مپ و این دردسر ها رو نداری

خیلی ترتمیز و راحت میشه خوند و نوشت داده ها رو

cpuram
جمعه 22 فروردین 1393, 21:09 عصر
نظری در باره ماهیت کارت ندارم ! (چون کلا با php نمیشه دقیقا فهمید که کی آنلاین هست و کی آفلاین )
ولی برای زخیره کردن داده ها توی فایل text از json استفاده کن اینجوری دیگه ریجکس و مپ و این دردسر ها رو نداری

خیلی ترتمیز و راحت میشه خوند و نوشت داده ها رو

چرا اینطور با قاطعیت حرف میزنید؟پس این همه سایت چیکار میکنن با php ؟
شمارش کاربر آنلاین که کاری نداره فقط کافیه ای پی ها رو برای یک بازه زمانی ذخیره کنیم.

plague
شنبه 23 فروردین 1393, 05:01 صبح
من نگفتم نمیشه
من گفتم دقیقا نمیشه

مثلا اگه بازه زمانی سیستم 5 دقیقه باشه
اگه شما 5 دقیقه فعالیت نکنی سیستم میگه رفتی در حالی که هستی
اگرم بری بیرون تا 5 دقیقه سیستم میگه هستی در حالی که رفتی !

اگه فکر میکنید این دقیقه بحثی نیست !