افراد آنلاين در يك آدرس مشخص

Ealireza

Member
سلام
من ميخواستم تو Global.ASA از يك سري تابع استفاده كنم كه نشد
کد:
Request.ServerVariables("HTTP_HOST")

ميخواهم با تعريف يك تابع بتونم افراد آنلاين هر صفحه از يك وب رو بدست بيارم

البته نميخواهم از Database استفاده كنم و فقط Application !

اگر كسي چيزي به ذهنش ميرسه دريغ نكنه يك راهنمايي كنه :wink:

البته از اينم تو صفحات استفاده كردم
کد:
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
    ...
End Sub
Sub Session_OnStart
    ... 
End Sub
Sub Session_OnEnd
    ...
End Sub
</SCRIPT>
اما تنها مشكلش اينه كه نميتونه افرادي كه ميرن رو حذف كنه

گر كسي چيزي به ذهنش ميرسه دريغ نكنه يك راهنمايي كنه :wink:
 

omidak

Active Member
سلام:
ببین برایه اینکه بخوایی بفهمی که کی کجا هستش بهترین راه همون دیتابیس هستش. و خیلی کار رو سریع و ساده میکنه. من که این راه رو توصیه میکنم. اگر میخوایی بگو تا یه توضیح کاملی برات بدم :wink:
 

Ealireza

Member
omidak گفت:
سلام:
ببین برایه اینکه بخوایی بفهمی که کی کجا هستش بهترین راه همون دیتابیس هستش. و خیلی کار رو سریع و ساده میکنه. من که این راه رو توصیه میکنم. اگر میخوایی بگو تا یه توضیح کاملی برات بدم :wink:
اگه ميشه يه توضيحي بده

ولي فكر كنم استفاده از ديتا بيس كار صحيحي نباشه چون واسه 900 تا در خواست در ثانيه خيلي كند ميشه


اميد جان اگه ميشه با Sql بگو
 

omidak

Active Member
سلام:
خوب ببین سرعت هم پایین نمیاد. مثلاً همین سایت افراد Online رو به این صورت نشون میده.
ببین خیلی ساده هست.:

اول یک Query میگیریم که ببینیم که آیا این شخص در لیست هست یا نه:
کد:
ُSelect * From Visitors Where IPAddress = '127.0.0.1'

بعد اگر وجود داشت تاریخ آخرین درخواست اون یا حرکتش رو در سایت به روز میکنی:
کد:
Update Visitors Set LastActionOn = GetDate() Where IPAddress = '127.0.0.1'

و اگر هم این شخص تازه وارد شده که یک اونو اظافه میکنی:
کد:
Insert Into Visitors(IPAddress, LastActionOn) Values('127.0.0.1', GetDate())

حالا در انتها افرادی که اونو TimeOut شدن یا به عبارتی مدت زیادیه که حرکتی در سایت نداشتند
مثلاً 10 دقیقه رو از لیست حذف میکنیم:
کد:
Delete From Visitors Where LastActionOn < DateAdd('Minute', 10, GetDate())

حالا از جدول لیست کل رو میگیریم.
یک مسعله میمونه. که اون هم جاییه که بازدید کننده هست. داخل جدول Visitor یک چیزی به اسم ActionPlace بزار که از نوع عددی هست و برایه صفحه هایه مختلف شماره بده مثلاً صفحه اول 0 صفحه دیدن نوشته ها 1 و ..... :wink:
 

Ealireza

Member
omidak گفت:
سلام:
خوب ببین سرعت هم پایین نمیاد. مثلاً همین سایت افراد Online رو به این صورت نشون میده.
ببین خیلی ساده هست.:

اول یک Query میگیریم که ببینیم که آیا این شخص در لیست هست یا نه:
کد:
ُSelect * From Visitors Where IPAddress = '127.0.0.1'

بعد اگر وجود داشت تاریخ آخرین درخواست اون یا حرکتش رو در سایت به روز میکنی:
کد:
Update Visitors Set LastActionOn = GetDate() Where IPAddress = '127.0.0.1'

و اگر هم این شخص تازه وارد شده که یک اونو اظافه میکنی:
کد:
Insert Into Visitors(IPAddress, LastActionOn) Values('127.0.0.1', GetDate())

حالا در انتها افرادی که اونو TimeOut شدن یا به عبارتی مدت زیادیه که حرکتی در سایت نداشتند
مثلاً 10 دقیقه رو از لیست حذف میکنیم:
کد:
Delete From Visitors Where LastActionOn < DateAdd('Minute', 10, GetDate())

حالا از جدول لیست کل رو میگیریم.
یک مسعله میمونه. که اون هم جاییه که بازدید کننده هست. داخل جدول Visitor یک چیزی به اسم ActionPlace بزار که از نوع عددی هست و برایه صفحه هایه مختلف شماره بده مثلاً صفحه اول 0 صفحه دیدن نوشته ها 1 و ..... :wink:
دستت درد نكنه
 

Ealireza

Member
اميد جان ميشه يه راهنمايي كنه چطوري ميشه از بيشترين افراد آنلاين تو يك صفحه مرتب كرد اومد تا پايين


تكراري هم در نياد


از همون روش بالا استفاده كردم


مرسي
 

omidak

Active Member
سلام:
خوب اگر شماره صفحه ها رو در ActionPlace قرار دادی از کد مشابه زیر استفاده کن:
کد:
Select ActionPlace, Count(*) As TotalVisitor From Visitors Group By ActionPlace

همون طور که میبینی در انتها کدی هست به اسم Group By که برایه ما کار دسته کردن رو انجام میده و مشابه ها رو یکی میکنه و در این حالت بقیه Column ها باید از سری Function هایه ترکیبی مثل Sum Count Avg و ... فراخانی بشن. حالا این کد نمونه رو که فرستادم یه نیگاهی بنداز :wink:
 

Ealireza

Member
اميد جان قربانت خيلي كمك كردي :wink:

آقا تنها چيزي كه مونده اينه كه نميتونم از بيشترين افراد آنلاين سورت كنم

اگه ميشه كمك كن (تكراري هم در نياد :wink:)

قربانت
 

Ealireza

Member
omidak گفت:
سلام:
خوب ايني كه من برات نوشتم اين كار رو ميكنه....
نه اميد جون كله آنلاين ها رو ميشمره فقط

من ميخوام سورت كنم از روي بيشترين آنلاين و اسم ها رو نشون بدم
 

Ealireza

Member
اميد جان من دقيقا از مد زير استفاده كردم
کد:
SQL = "Select header , Count(*) As ipx From Online Group By Header "
Set intx= Server.CreateObject("ADODB.Recordset")
intx.Open SQL,webStatic
do while not intx.eof 

.....

intx.movenext
loop
intx.close


و در ديتا بيس هم دارم
کد:
Id	Ip	Enter	                          Header
314803	197.0.0.1	   1/8/20052:37:42 PM     localhost\1.asp
315708	197.0.0.1    1/8/20052:38:17 PM     localhost\2.asp
315708	197.0.0.1	   1/8/20052:38:17 PM      localhost\2.asp
315708	197.0.0.1	   1/8/20052:38:18 PM      localhost\2.asp
315708	197.0.0.1	   1/8/20052:38:19 PM      localhost\1.asp

اميد جان متاسفانه هر كاري كردم نشد از بيشترين تعداد سورت كنم

قربانت
 

omidak

Active Member
سلام:
خوب خروجي اين برنامه به تو ميده:
کد:
Header                  ipx
-----------------------------------------
localhost\1.asp     2
localhost\2.asp     3
خوب اين هم دقيقاً همون چيزيه که ميخوايي ديگه... که ببيني تويه کدوم صفحه چه تعداد افراد وجود داره
 

Ealireza

Member
omidak گفت:
سلام:
خوب خروجي اين برنامه به تو ميده:
کد:
Header                  ipx
-----------------------------------------
localhost\1.asp     2
localhost\2.asp     3
خوب اين هم دقيقاً همون چيزيه که ميخوايي ديگه... که ببيني تويه کدوم صفحه چه تعداد افراد وجود داره
اميد جان متاسفانه فقط دسته ميكنه
هر كاري كردم نشد

ميخواهم سورت كنم
از بيشترين آنلاين به كمترين


هر كاري كردم نشد


اگه ميشه كمكم كن


مرسي
 

Ealireza

Member
Ealireza گفت:
omidak گفت:
سلام:
خوب خروجي اين برنامه به تو ميده:
کد:
Header                  ipx
-----------------------------------------
localhost\1.asp     2
localhost\2.asp     3
خوب اين هم دقيقاً همون چيزيه که ميخوايي ديگه... که ببيني تويه کدوم صفحه چه تعداد افراد وجود داره
اميد جان متاسفانه فقط دسته ميكنه
هر كاري كردم نشد

ميخواهم سورت كنم
از بيشترين آنلاين به كمترين


هر كاري كردم نشد


اگه ميشه كمكم كن


مرسي
اين كار امكان پذير نيست ؟


لطفا راهنمايي كنيد
 

aminir

Member
ببخشيد در بحثتون شركت مي كنم از اين استفاده كن
کد:
order by ipx desc
 

جدیدترین ارسال ها

بالا