PDA

View Full Version : حرفه ای: نمایش تعداد کاربران آنلاین



beh3000
یک شنبه 30 آذر 1393, 11:47 صبح
سلام

توی وب سایت پونیشا به این آدرس (http://ponisha.ir/) توی قسمت فوتر یه آماری داده نوشته تعداد کاربران آنلاین انقد نفر هستند این آمار در هر ثانیه داره تغییر میکنه ؟ بعضی وقتا به ثانیه هم نمیرسه ... به نظرتون درسته ؟ وجود داره یه همچین چیزی مردم ؟؟ :متفکر:

126756

اگه درسته چجوری تعداد کاربران آنلاین رو میگیرن ؟ از دیتابیس میخونن تعداد کاربرای که لاگین کردن ؟؟ این که نیست چون که فکر نمیکنم تعداد لاگین کرده ها باشن ... تعداد بازدید کنندگان آنلاین چجوری بدست میاد ؟

اگه هر ثانیه بخواد آمار تغییر کنه به سرور فشار نمیاد ؟

H:Shojaei
یک شنبه 30 آذر 1393, 12:16 عصر
چرا که نه...
برنامه نویسی سوکت یا با ajax یا با node.js با همه اینا میشه این کارو کرد...
سوکت و node.js به این شکله که وقتی یه کاربر به سرور وصل میشه یا ارتباطشو قصع میکنه به سرور اطلاع داده میشه و شما میتونید این رو به کاربرای دیگه اطلاع بدید...
و با ajax هم میتونید هر یک ثانیه 2 یا چند ثانبه چک کنید چه کاربرانی آنلاینن، کاربر که کاری میکنه رو تو دیتا بیس ثبت کنید و وقتی یه کاربر برای مثلا 5 ثانیه کاری نکرد دیگه مثلا اون کاربر off شده...
میتونید یه تابع ajax هم داشته باشید که هر چند ثانبه تایم فعلی رو تو رکورد کاربر ثبت کنه و یه تابع دیگه واسه این که ببینید کدوم کاربرا هستن که اون رکورد زمانشون مثلا مال 5 ثانیه قبل هست و اونا میشن آنلاین و اونایی هم که تو سایت نیستن که رکورد زمانشون تغییر کنه دیگه off هستن...

beh3000
یک شنبه 30 آذر 1393, 15:13 عصر
کاربرانی که لاگین کردن درست راحت میشه این کار رو کرد ... من منظورم بازدیدکنندگان سایت بود .. اونام بالاخره تو سایت آنلاین هستن دیگه

n0o0b_sina
یک شنبه 30 آذر 1393, 16:19 عصر
سلام
من خوذم این کارو کردم نمیدونم درسته یا نه:
وقتی کاربر وارد سایت میشه و یا هر فعالیتی (رفرش صفحه رفتن به صفحات دیگ و...) انجام میده یک رکورد توی دیتابیس ذخیره میشه با تاریخ و زمان فعلی سپس با setInterval یک درخواست ajax رو هر 5 دقیقه به سرور میفرستم تا چک کنه توی بازه زمانی 5 دقیقه پیش تا الان چند تا رکورد ثبت شده.

H:Shojaei
یک شنبه 30 آذر 1393, 17:38 عصر
خوب واسه این کار با session_id کار کنید هر کاربر یه سشن آی دی منحصر به فرد داره شما همون مقدار رو بفرستید به دیتابیس و اون رکورد میشه یه کاربر و ادامه ماجرا...

n0o0b_sina
یک شنبه 30 آذر 1393, 17:57 عصر
میدونم، ولی من چون اطلاعات بیشتری از هر کاربر میگیرم این کارو انجام دادم. اطلاعاتی مثله آی پی هر کاربر مرورگر هر کاربر سیستم عامل صفحه ای که ازش اومده و ... واسه همون این کارو انجام میدم :)

H:Shojaei
یک شنبه 30 آذر 1393, 18:34 عصر
میدونم، ولی من چون اطلاعات بیشتری از هر کاربر میگیرم این کارو انجام دادم. اطلاعاتی مثله آی پی هر کاربر مرورگر هر کاربر سیستم عامل صفحه ای که ازش اومده و ... واسه همون این کارو انجام میدم :)
ببخشید سوء تفاهم شد نقل قول نکردم من منظورم با دوستمون beh3000 بود...
و البته کار شما کاملا درسته اونی که من گفتم واسه وقتی هست کاربر های میهمان که ثبت نیستن رو بخواید بدونید چند تان...

php_zone
دوشنبه 01 دی 1393, 17:21 عصر
چرا که نه...
برنامه نویسی سوکت یا با ajax یا با node.js با همه اینا میشه این کارو کرد...
سوکت و node.js به این شکله که وقتی یه کاربر به سرور وصل میشه یا ارتباطشو قصع میکنه به سرور اطلاع داده میشه و شما میتونید این رو به کاربرای دیگه اطلاع بدید...
و با ajax هم میتونید هر یک ثانیه 2 یا چند ثانبه چک کنید چه کاربرانی آنلاینن، کاربر که کاری میکنه رو تو دیتا بیس ثبت کنید و وقتی یه کاربر برای مثلا 5 ثانیه کاری نکرد دیگه مثلا اون کاربر off شده...
میتونید یه تابع ajax هم داشته باشید که هر چند ثانبه تایم فعلی رو تو رکورد کاربر ثبت کنه و یه تابع دیگه واسه این که ببینید کدوم کاربرا هستن که اون رکورد زمانشون مثلا مال 5 ثانیه قبل هست و اونا میشن آنلاین و اونایی هم که تو سایت نیستن که رکورد زمانشون تغییر کنه دیگه off هستن...

دوست عزیز میشه یه نمونه سوکت یا Node.js که با php هماهنگ و پارالل بشه برامون بنویسی ؟!
ممنون

H:Shojaei
دوشنبه 01 دی 1393, 18:21 عصر
دوست عزیز میشه یه نمونه سوکت یا Node.js که با php هماهنگ و پارالل بشه برامون بنویسی ؟!
ممنون
شرمنده قرار دادن کد خلاف قوانین وب سایت هست...
سوالی بود در خدمتم...
در ضمن socket توابعی برای کار تو php داره ولی شما نمیتونید node.js رو داخل یه فایل php داشته باشید چون هر کدوم از این ها یک زبان هستن و کنار هم نمیشه کار کرد باهاشون ولی میشه اطلاعات رو به وسیله دیتابیس فایل کوکی و ... بین فایلهای دو زبان انتقال داد...
[راستی این جمله که نوشتید نمیدونم کنایه بود یا واقعی!]