PDA

View Full Version : چجوری تعداد بازدید یک پست رو محاسبه و کنیم؟



saeed-71
پنج شنبه 09 مرداد 1393, 11:15 صبح
سلام.
چجوری تعداد بازدید یک پست رو محاسبه و کنیم؟
هر دفعه باید مقدار اولیه رو بخونیم و + 1 کنیم و دوباره آپدیت یا راه دیگه ای هم هست؟

arash691
پنج شنبه 09 مرداد 1393, 11:23 صبح
سلام.
چجوری تعداد بازدید یک پست رو محاسبه و کنیم؟
هر دفعه باید مقدار اولیه رو بخونیم و + 1 کنیم و دوباره آپدیت یا راه دیگه ای هم هست؟

راهش همینه ولی بهت بازدید واقعی رو نمیده چون رو ادامه مطلب رو بزنی 100 بار رفرش کنی تعداد بازدید میشه 100 باید یه کاری بکنی که جلوی این چیزا رو بگیره ... دو تا راه حل به ذهن من رسیده وپیاده هم کردیم جواب داد اولی استفاده از ip شخص بازدیدکننده دومی استفاده از cookie هستش یعنی شماره پست رو بریز تو کوکی برای چند دقیقه ست کن اگه شماره پست تو ارایه کوکی بود عمل افزایش تعداد بازدید انجام نشه بعد از اینکه عمر کوکی تموم بشه یعنی مجاز به افزایش تعداد بازدید واسه پست صادر میشه

saeed-71
پنج شنبه 09 مرداد 1393, 23:08 عصر
راه دقیق و بهتر وجود داره؟

[younes]
پنج شنبه 09 مرداد 1393, 23:15 عصر
به نظر من ip و کوکی برای این کار بهترین گزینه ای است که میشه استفاده کرد مگه شما از یه کانتر چه توقعی دارید؟

Veteran
پنج شنبه 09 مرداد 1393, 23:19 عصر
ای پی هرکاربر ذخیره کن به تفکیک پست ها و بعد تعدادش رو نشون بده
قبل از ذخیره چک کن که از قبل ای پی برای پست جاری وجود نداشته باشه
یعنی هر ای پی برای یک پست فقط وجود داشته باشه!

saeed-71
پنج شنبه 09 مرداد 1393, 23:34 عصر
یعنی یه جدول دیگه بسازم برای شمارش بازدید پست؟

alibehroozi
پنج شنبه 09 مرداد 1393, 23:38 عصر
هر پست شما باید یک کد داشته باشه درسته ؟
یک جدول بسازید با این ستون ها :
id,code,ip
حالا بعد از هر نمایش ابتدا در این جدول چک کنید که با کد پست ... و آیپی ... بازدید نکرده باشه
اگر بازدید نکرده بود آیپی و کد رو اضافه کنه و اگر بود که هیچ کاری نکنه :لبخند:

arash691
پنج شنبه 09 مرداد 1393, 23:46 عصر
با اینکه میشه با ای پی هم کارکرد ولی من ترجیح میدم db رو درگیر نکنم و با کوکی کار کنم ... هم الکی اطلاعات بیهوده ذخیره نمیشه هم کارایی بهتری داره ...

alibehroozi
پنج شنبه 09 مرداد 1393, 23:48 عصر
با کوکی کارتون سخت میشه ...

arash691
پنج شنبه 09 مرداد 1393, 23:52 عصر
با کوکی کارتون سخت میشه ...

میشه بگید چرا ؟

2020s1371
جمعه 10 مرداد 1393, 02:35 صبح
@arash691 (http://barnamenevis.org/member.php?281367-arash691)
اگه میشه یه مقدار در مورد کوکی بیشتر توضیح بدین و حتی المقدور از ساده تر تا کامل تر... :(

DR.HTML
جمعه 10 مرداد 1393, 08:48 صبح
کلا شما داری یه کاری شبیه به همین تاپیکهای وی بی انجام میدی ویبی برای اینکار از کوکی و ای پی استفاده میکنه و البته ثبت در دیتابیس و به قول اقای شهرکی اتصال به دیتابیس رو انقدر بزرگش نکنیم یه دستور سوکت بیشتر نیست اینکار فقط با ای نباید صورت بگیره چون مثلا شما امروز میای این تاپیک رو باز میکنی میزنه 1 بازدید حالا رفرش کنی نباید یه بازدید اضافه کنه اما اگر چهار پنج ساعت بعد بیای رفرش کنی دوباره باید بازدید اضافه کنه چون حتما بعد از اون ساعت اومدی یه چیزیو ببینی پس اینم بازم بازدید واقعی حساب میشه (چه قرو قطی شد :لبخند:)

کلا هر ایپی هر چند ساعت باید بازدیدش شمرده بشه مثلا توی هر چهار ساعت اگر یه ای پی 10 باز او مد توی موضوع 1 بار شمرده بشه اما بعد چهار ساعت بازم اومد یه بار دیگه شمرده بشه و loop

:لبخند:

arash691
جمعه 10 مرداد 1393, 13:36 عصر
@arash691 (http://barnamenevis.org/member.php?281367-arash691)
اگه میشه یه مقدار در مورد کوکی بیشتر توضیح بدین و حتی المقدور از ساده تر تا کامل تر... :(

ببینید هدف بدست اوردن تعداد بازدید با بیشترین دقت هستش یعنی حداقل کاری که میشه کرد اینطور درنظر بگیریم که وقتی یک مطلب در حال مشاهده هستش اونم برای اولین بار این عمل میتونه یک بازدید واقعی برای اون پست در نظر گرفته بشه اما اگه کاربر بهردلیلی بیاد رفرش بکنه صفحه رو نباید باعث افزایش تعداد بازدید پست بشه برای اینکه از این عمل حداقل برای یک بازه ی زمانی کم مثلا" 1 دقیقه جلوگیری بشه کافی هستش افزایش بازدید پست رو حالا به روش بررسی ای پی یا کوکی مورد بررسی قرار بدیم که من روش استفاده از کوکی رو اینجا توضیح میدم . برای این کار شما باید یک تابع بنویسید که بیاد برای هر پست بازدید شده یک کوکی ایجاد بکنه که ای دی اون uniq باشه و مقدارش برابر ای دی پست باشه همینطور عمر این کوکی رو برابر تایمی در نظر بگیرید که میخواین رفرش توش باعث افزایش تعداد بازدید نشه پس بعد از اینکه عمل افزایش بازدید رو اعمال کردین این کوکی رو با مشخصات گفته شده ایجاد کنید حالا کافی هستش برای دفعه ی بعدی ای دی پست بررسی بشه که ایا تو ارایه کوکی هستش یا نه ؟ که با یک foreach ساده قابل اجرا هستش پس روش کار به این صورت هستش که اگه ای دی پست تو کوکی ها نبود عمل افزایش یکبار صورت میگیره و یک کوکی با ای دی یکتا تولید بشه و مقدارش برابر ای دی پست میشه در غیراینصورت عمل افزایش صورت نمیگیره چرا ؟ چونکه کوکی متناظر با پست وجود داره و هنوز تو تایمی هستیم که نباید جزء بازدید محسوب بشه مثلا" همین الان کاربر داره پست رو میبینه و بعد از چند ثانیه عمل رفرش رو انجام داده که نباید جزء بازدید محسوب بشه ... من این روش رو به نگه داشتن ای پی تو دی بی بیشتر ترجیح میدم چرا که با یک تابع 6-7 خطی قابل اجراس همینطور نه نیاز به کار با دیتابیس هستش و نه چیز دیگه ای ... باز انتخاب با خودتون هستش ... البته اگه بخواین اطلاعات جغرافیایی و غیره از بازدیدکنندگان بدست بیارین از همون روش ای پی باید استفاده کنید

Mohammadsgh
جمعه 10 مرداد 1393, 19:24 عصر
استفاده از کوکی کار جالبی نیست.اومدیمو کاربر کوکیو پاک کرد داستان چی میشه؟:لبخند:
بهترین روش(از دید من.شاید روش درستی نباشه:لبخندساده:)کنار پست یه فیلد به نام couner ایجاد کنید.و هر بار آپدیتش کنید و تو یه foreach بزارید:لبخندساده:
سایت هایی مانند پی سی دانلود و ..... هم از این روش استفاده میکنن.شما اگه برگه رو دوباره باز آوری و بارگذاری کنید بازم دوباره دارید ازش بازید میکنید و یه بازدید واقعیه پس باید به آمار افزوده بشه:لبخندساده:
کامیاب باشید

arash691
شنبه 11 مرداد 1393, 15:33 عصر
استفاده از کوکی کار جالبی نیست.اومدیمو کاربر کوکیو پاک کرد داستان چی میشه؟

والله اون کاربری که کوکی های سایت رو حذف کنه دیگه کاربر نیست ... تستر هستش که میخواد از کار ما ایراد بگیره :لبخند: میشه از سشن استفاده کرد ... بازم میگم من نمیخواستم دی بی رو در گیر کنم واسه همین از این روش استفاده کردم

Mohammadsgh
شنبه 11 مرداد 1393, 22:14 عصر
از دید من نباید برای اینجور کارهای ساده از کوکی استفاده کرد.همون دیتابیس بهتره:لبخندساده:

peymang
یک شنبه 12 مرداد 1393, 02:41 صبح
اگه می خوای دقیق باشه نه از کوکی نه از آی پی استفاده کن چون این دوتا متغییر هستن و دست کاربرن
سشن هم فک نکنم برای این کار مناسب باشه چون سمت سرور هست( تا اونجایی که من می دونم)

بهترین کار اینه که فقط شمارش کاربرای سایت رو داشته باشید یعنی اگه یه کاربر از پست دیدن کرد یه سطر تو جدول اضافه کنی با ای دی پست و ای دی کاربر

این در صورتی هست که می خوای بازدید کننده هر پست رو ثبت کنی
ولی اگه بازدید رو می خوای همون کار خودتون درسته

moon_sky
سه شنبه 06 مرداد 1394, 20:58 عصر
سلام
پست های بالا رو خوندم و دو سوال دارم:
یکی اینکه ip هرکاربر رو با چه دستوری میتونیم به دست بیاریم؟
و دوم اینکه چه طوری محدودیت زمانی برای هر ip میشه گذاشت؟ مثلا وقتی کاربری با یه ip وارد سایت شد در مدت 2 ساعت آینده اگر از صفحه ای از سایت دیدن کرد به تعداد بازدید کننده ها اضافه نشه ولی بعد دو ساعت یک شماره افزوده بشه.
این مدت زمانی رو با چه دستوراتی میشه نوشت؟
ممنون میشم اگر یک مقدار توضیح بدید.

Unique
سه شنبه 06 مرداد 1394, 22:28 عصر
اولا لازم نبود پست زیر خاکی در بیارین دوست من و میتونستین توی یک تاپیک جدید به این تاپیک اشاره کنید.


یکی اینکه ip هرکاربر رو با چه دستوری میتونیم به دست بیاریم؟

$_SERVER['REMOTE_ADDR']


و دوم اینکه چه طوری محدودیت زمانی برای هر ip میشه گذاشت؟ مثلا وقتی کاربری با یه ip وارد سایت شد در مدت 2 ساعت آینده اگر از صفحه ای از سایت دیدن کرد به تعداد بازدید کننده ها اضافه نشه ولی بعد دو ساعت یک شماره افزوده بشه.

برای بحث ip شما باید یک جدول داشته باشین که شماره آیدی پست و ip را توش نگه داره و هر بار که میخواین یک بازدید به یک پست اضافه کنید چک کنید که ip و شماره پست توی اون جدول نباشه ، برای اینکه برای ۲ ساعت این جلوگیری صورت بگیره کافیه زمان ثبت رکورد را هم توی یک فیلد datetime ذخیره کنید و هر بار قبل از اینکه برای هر کسی جستجو کنید ببینین ip و شماره id پست قلا بوده یا نه کافیه یک کوئری delete بزنین که رکورد هایی که از زمان ثبتشون بیش از ۲ ساعت نوشته شده را حذف کنه و بعدش شما slect بگیرین.

moon_sky
چهارشنبه 07 مرداد 1394, 21:04 عصر
اولا لازم نبود پست زیر خاکی در بیارین دوست من و میتونستین توی یک تاپیک جدید به این تاپیک اشاره کنید.


$_SERVER['REMOTE_ADDR']

برای بحث ip شما باید یک جدول داشته باشین که شماره آیدی پست و ip را توش نگه داره و هر بار که میخواین یک بازدید به یک پست اضافه کنید چک کنید که ip و شماره پست توی اون جدول نباشه ، برای اینکه برای ۲ ساعت این جلوگیری صورت بگیره کافیه زمان ثبت رکورد را هم توی یک فیلد datetime ذخیره کنید و هر بار قبل از اینکه برای هر کسی جستجو کنید ببینین ip و شماره id پست قلا بوده یا نه کافیه یک کوئری delete بزنین که رکورد هایی که از زمان ثبتشون بیش از ۲ ساعت نوشته شده را حذف کنه و بعدش شما slect بگیرین.

خیلی ممنون بابت پاسخگویی

من برنامه رو برای چک کردن فقط ip نوشتم و اجرا شد ولی برای چک کردن محدودیت زمانی نمیدونم باید از دستوری استفاده کنم.
زمان ورود ip را با تابع time ذخیره میکنیم حالا با چه دستوری چک کنم که بیشتر از 2 ساعت شده یا نه؟ ممنون میشم یه خرده توضیح بدید.

Unique
چهارشنبه 07 مرداد 1394, 23:10 عصر
گفتم که باید قبل از چک کردن رکورد هایی که زمانشون قبل از ۲ ساعت پیشه را حذف کنی ، اینطوری :

delete from _log_table where l_date < (time() - (60 * 60 * 2))

حالا چک کن ببین برای ip مورد نظر رکرودی هست یا نه !