سلام.
چجوری تعداد بازدید یک پست رو محاسبه و کنیم؟
هر دفعه باید مقدار اولیه رو بخونیم و + 1 کنیم و دوباره آپدیت یا راه دیگه ای هم هست؟
سلام.
چجوری تعداد بازدید یک پست رو محاسبه و کنیم؟
هر دفعه باید مقدار اولیه رو بخونیم و + 1 کنیم و دوباره آپدیت یا راه دیگه ای هم هست؟
راهش همینه ولی بهت بازدید واقعی رو نمیده چون رو ادامه مطلب رو بزنی 100 بار رفرش کنی تعداد بازدید میشه 100 باید یه کاری بکنی که جلوی این چیزا رو بگیره ... دو تا راه حل به ذهن من رسیده وپیاده هم کردیم جواب داد اولی استفاده از ip شخص بازدیدکننده دومی استفاده از cookie هستش یعنی شماره پست رو بریز تو کوکی برای چند دقیقه ست کن اگه شماره پست تو ارایه کوکی بود عمل افزایش تعداد بازدید انجام نشه بعد از اینکه عمر کوکی تموم بشه یعنی مجاز به افزایش تعداد بازدید واسه پست صادر میشه
راه دقیق و بهتر وجود داره؟
به نظر من ip و کوکی برای این کار بهترین گزینه ای است که میشه استفاده کرد مگه شما از یه کانتر چه توقعی دارید؟
ای پی هرکاربر ذخیره کن به تفکیک پست ها و بعد تعدادش رو نشون بده
قبل از ذخیره چک کن که از قبل ای پی برای پست جاری وجود نداشته باشه
یعنی هر ای پی برای یک پست فقط وجود داشته باشه!
یعنی یه جدول دیگه بسازم برای شمارش بازدید پست؟
هر پست شما باید یک کد داشته باشه درسته ؟
یک جدول بسازید با این ستون ها :
id,code,ip
حالا بعد از هر نمایش ابتدا در این جدول چک کنید که با کد پست ... و آیپی ... بازدید نکرده باشه
اگر بازدید نکرده بود آیپی و کد رو اضافه کنه و اگر بود که هیچ کاری نکنه
با اینکه میشه با ای پی هم کارکرد ولی من ترجیح میدم db رو درگیر نکنم و با کوکی کار کنم ... هم الکی اطلاعات بیهوده ذخیره نمیشه هم کارایی بهتری داره ...
با کوکی کارتون سخت میشه ...
@arash691
اگه میشه یه مقدار در مورد کوکی بیشتر توضیح بدین و حتی المقدور از ساده تر تا کامل تر... :(
کلا شما داری یه کاری شبیه به همین تاپیکهای وی بی انجام میدی ویبی برای اینکار از کوکی و ای پی استفاده میکنه و البته ثبت در دیتابیس و به قول اقای شهرکی اتصال به دیتابیس رو انقدر بزرگش نکنیم یه دستور سوکت بیشتر نیست اینکار فقط با ای نباید صورت بگیره چون مثلا شما امروز میای این تاپیک رو باز میکنی میزنه 1 بازدید حالا رفرش کنی نباید یه بازدید اضافه کنه اما اگر چهار پنج ساعت بعد بیای رفرش کنی دوباره باید بازدید اضافه کنه چون حتما بعد از اون ساعت اومدی یه چیزیو ببینی پس اینم بازم بازدید واقعی حساب میشه (چه قرو قطی شد )
کلا هر ایپی هر چند ساعت باید بازدیدش شمرده بشه مثلا توی هر چهار ساعت اگر یه ای پی 10 باز او مد توی موضوع 1 بار شمرده بشه اما بعد چهار ساعت بازم اومد یه بار دیگه شمرده بشه و loop
ببینید هدف بدست اوردن تعداد بازدید با بیشترین دقت هستش یعنی حداقل کاری که میشه کرد اینطور درنظر بگیریم که وقتی یک مطلب در حال مشاهده هستش اونم برای اولین بار این عمل میتونه یک بازدید واقعی برای اون پست در نظر گرفته بشه اما اگه کاربر بهردلیلی بیاد رفرش بکنه صفحه رو نباید باعث افزایش تعداد بازدید پست بشه برای اینکه از این عمل حداقل برای یک بازه ی زمانی کم مثلا" 1 دقیقه جلوگیری بشه کافی هستش افزایش بازدید پست رو حالا به روش بررسی ای پی یا کوکی مورد بررسی قرار بدیم که من روش استفاده از کوکی رو اینجا توضیح میدم . برای این کار شما باید یک تابع بنویسید که بیاد برای هر پست بازدید شده یک کوکی ایجاد بکنه که ای دی اون uniq باشه و مقدارش برابر ای دی پست باشه همینطور عمر این کوکی رو برابر تایمی در نظر بگیرید که میخواین رفرش توش باعث افزایش تعداد بازدید نشه پس بعد از اینکه عمل افزایش بازدید رو اعمال کردین این کوکی رو با مشخصات گفته شده ایجاد کنید حالا کافی هستش برای دفعه ی بعدی ای دی پست بررسی بشه که ایا تو ارایه کوکی هستش یا نه ؟ که با یک foreach ساده قابل اجرا هستش پس روش کار به این صورت هستش که اگه ای دی پست تو کوکی ها نبود عمل افزایش یکبار صورت میگیره و یک کوکی با ای دی یکتا تولید بشه و مقدارش برابر ای دی پست میشه در غیراینصورت عمل افزایش صورت نمیگیره چرا ؟ چونکه کوکی متناظر با پست وجود داره و هنوز تو تایمی هستیم که نباید جزء بازدید محسوب بشه مثلا" همین الان کاربر داره پست رو میبینه و بعد از چند ثانیه عمل رفرش رو انجام داده که نباید جزء بازدید محسوب بشه ... من این روش رو به نگه داشتن ای پی تو دی بی بیشتر ترجیح میدم چرا که با یک تابع 6-7 خطی قابل اجراس همینطور نه نیاز به کار با دیتابیس هستش و نه چیز دیگه ای ... باز انتخاب با خودتون هستش ... البته اگه بخواین اطلاعات جغرافیایی و غیره از بازدیدکنندگان بدست بیارین از همون روش ای پی باید استفاده کنید
استفاده از کوکی کار جالبی نیست.اومدیمو کاربر کوکیو پاک کرد داستان چی میشه؟
بهترین روش(از دید من.شاید روش درستی نباشه)کنار پست یه فیلد به نام couner ایجاد کنید.و هر بار آپدیتش کنید و تو یه foreach بزارید
سایت هایی مانند پی سی دانلود و ..... هم از این روش استفاده میکنن.شما اگه برگه رو دوباره باز آوری و بارگذاری کنید بازم دوباره دارید ازش بازید میکنید و یه بازدید واقعیه پس باید به آمار افزوده بشه
کامیاب باشید
از دید من نباید برای اینجور کارهای ساده از کوکی استفاده کرد.همون دیتابیس بهتره
اگه می خوای دقیق باشه نه از کوکی نه از آی پی استفاده کن چون این دوتا متغییر هستن و دست کاربرن
سشن هم فک نکنم برای این کار مناسب باشه چون سمت سرور هست( تا اونجایی که من می دونم)
بهترین کار اینه که فقط شمارش کاربرای سایت رو داشته باشید یعنی اگه یه کاربر از پست دیدن کرد یه سطر تو جدول اضافه کنی با ای دی پست و ای دی کاربر
این در صورتی هست که می خوای بازدید کننده هر پست رو ثبت کنی
ولی اگه بازدید رو می خوای همون کار خودتون درسته
سلام
پست های بالا رو خوندم و دو سوال دارم:
یکی اینکه ip هرکاربر رو با چه دستوری میتونیم به دست بیاریم؟
و دوم اینکه چه طوری محدودیت زمانی برای هر ip میشه گذاشت؟ مثلا وقتی کاربری با یه ip وارد سایت شد در مدت 2 ساعت آینده اگر از صفحه ای از سایت دیدن کرد به تعداد بازدید کننده ها اضافه نشه ولی بعد دو ساعت یک شماره افزوده بشه.
این مدت زمانی رو با چه دستوراتی میشه نوشت؟
ممنون میشم اگر یک مقدار توضیح بدید.
اولا لازم نبود پست زیر خاکی در بیارین دوست من و میتونستین توی یک تاپیک جدید به این تاپیک اشاره کنید.
یکی اینکه ip هرکاربر رو با چه دستوری میتونیم به دست بیاریم؟$_SERVER['REMOTE_ADDR']
برای بحث ip شما باید یک جدول داشته باشین که شماره آیدی پست و ip را توش نگه داره و هر بار که میخواین یک بازدید به یک پست اضافه کنید چک کنید که ip و شماره پست توی اون جدول نباشه ، برای اینکه برای ۲ ساعت این جلوگیری صورت بگیره کافیه زمان ثبت رکورد را هم توی یک فیلد datetime ذخیره کنید و هر بار قبل از اینکه برای هر کسی جستجو کنید ببینین ip و شماره id پست قلا بوده یا نه کافیه یک کوئری delete بزنین که رکورد هایی که از زمان ثبتشون بیش از ۲ ساعت نوشته شده را حذف کنه و بعدش شما slect بگیرین.و دوم اینکه چه طوری محدودیت زمانی برای هر ip میشه گذاشت؟ مثلا وقتی کاربری با یه ip وارد سایت شد در مدت 2 ساعت آینده اگر از صفحه ای از سایت دیدن کرد به تعداد بازدید کننده ها اضافه نشه ولی بعد دو ساعت یک شماره افزوده بشه.
گفتم که باید قبل از چک کردن رکورد هایی که زمانشون قبل از ۲ ساعت پیشه را حذف کنی ، اینطوری :
delete from _log_table where l_date < (time() - (60 * 60 * 2))
حالا چک کن ببین برای ip مورد نظر رکرودی هست یا نه !