شما عضو این انجمن نبوده یا وارد نشده اید. لطفا برای مشاهده کامل انجمن و استفاده از آن وارد شوید یا ثبت نام کنید .

امتیاز موضوع:
  • 43 رأی - میانگین امتیازات: 2.93
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
کلمات کلیدی
با دیتابیس آمار استفاده بازدیدها از نمایش php بدون

نمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس
#1
از جمله امکانات اولیه که ممکن است برای خیلی از سایت ها کاربردی باشد، نمایش آمار بازدیدها به مخاطبان است که البته برای رسیدن به این هدف راه های گوناگونی نیز وجود دارد، به طور مثال برخی ترجیح می دهند از ابزارهای رایگان در سرویس های مختلف استفاده کنند، برخی از سایت های مرجع و عده ای نیز به دنبال راه اندازی سیستم شخصی خود هستند، به هر صورت در این مطلب برای کسانی که می خواهند سیستم نمایش آمار مستقل، بدون صرف منابع سرور، بدون استفاده از دیتابیس و بدون سر و کار داشتن با دانش برنامه نویسی سطح بالا داشته باشند و آمار سایت خود را به صورت مختصر و مفید به بازدیدکنندگان نشان دهند، آموزش تقریبا کاملی در نظر گرفته ایم که امیدواریم مفید واقع شود، در این آموزش خواهیم دید که چگونه می توان با چند خط کدنویسی PHP یک سیستم به اصطلاح جمع و جور و هوشمند محاسبه و نمایش آمار بازدید ساخت.

چرا از آمارگیر بدون استفاده از دیتابیس استفاده کنیم؟

سوالی که ممکن است در نگاه اول به ذهن برسد این است که با وجود سیستم های آمارگیر موجود، چه لزومی دارد که از سیستم آمارگیر بدون دیتابیس استفاده کنیم؟
البته پاسخ این سوال روشن است، لزومی وجود ندارد!، بلکه به فراخور انتظاراتی که ما از یک سیستم نمایش آمار بازدیدها داریم، می توان از برنامه ای خاص و پیچیده و یا در عین حال کدی سبک و شخصی استفاده کرد، به طور مثال برخی صرفا تمایل دارند که آمار بازدیدها را به کاربران نشان دهند و برایشان اهمیتی ندارد که اطلاعات و تجزیه تحلیل های اضافه را نیز در اختیار داشته باشند، از طرفی ابزارهای رایگان و سیستم های وابسته به سایر سایت ها، اگرچه ممکن است خیلی مزایا داشته باشند، اما باید توجه نمود که اغلب اوقات موجب بروز مشکلاتی مانند از دسترس خارج شدن، کند شدن سرعت بارگذاری صفحات، وجود لینک های بعضا غیر استاندارد به سایت سرویس دهنده و... نیز می شوند، از طرفی سیستم های شخصی مبتنی بر دیتابیس نیز در عین مزایایی که دارند، ما را با محدودیت هایی مواجه می کنند، از جمله اینکه الزاما باید دیتابیسی در اختیار داشته باشیم، میزان فضای کافی برای ذخیره اطلاعات موجود باشد، برنامه مدیریت آن را بنویسیم و لذا به سطح بالایی از دانش برنامه نویسی نیازمندیم و... لذا ملاحظه می کنید که هر روشی ممکن است مزایا و در عین حال معایب خاص خود را داشته باشد و این شما و هدفتان است که تعیین می کند از چه شیوه ای استفاده کنید.

کد PHP برای محاسبه و نمایش آمار بازدیدها
برای محاسبه و نمایش آمار بازدیدها می توانید از کد PHP زیر استفاده کنید، این کد قادر به محاسبه و نمایش آمار بازدیدهای امروز، دیروز، بازدید کل و نمایش افراد آنلاین است، برای قسمت افراد آنلاین از IP کاربران جهت تفکیک آنها استفاده شده و به صورت پیش فرض بعد از هر بار بارگذاری صفحات سایت، آن کاربر تا 5 دقیقه آنلاین محسوب می شود و با رفرش یا بارگذاری صفحات دیگر، این زمان به صورت هوشمندانه به روز شده و از نو محاسبه می گردد، از جمله سایر امکانات این ابزار به ظاهر کوچک، قابلیت حذف خودکار IP کاربرانی است که دیگر آنلاین نیستند، این کار از اضافه شدن بی مورد حجم فایل برنامه جلوگیری می کند.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

توضیح:
- قبل از هر چیز دو فایل با نام های visit-stats.txt و visit-online.txt در کنار فایل اصلی برنامه ایجاد کنید، از این دو فایل برای ذخیره و نمایش اطلاعات مربوط به بازدیدها و افراد آنلاین استفاده خواهیم کرد.
- سپس در ابتدای کد، اختلاف زمان محلی و زمان سرور خود را مشخص می کنیم، به طور مثال اگر زمان سرور بر روی GMT تنظیم شده باشد، اختلاف محلی برای ایران در حالت معمول معادل 3:30 ساعت و به عبارتی 12600 ثانیه است (60*60 برابر 3600 ثانیه برای یک ساعت).
- در گام بعد با تابع date و time تاریخ امروز را به صورت میلادی به دست می آوریم، سپس از همین روش استفاده کرده و زمان فعلی را از 86400 ثانیه که معادل 24 ساعت است (3600*24) کم می کنیم تا تاریخ دیروز نیز مشخص شود.
- در گام بعدی فایل مورد نظر جهت ذخیره و بازیابی آمار بازدیدها را تعیین کرده و با تابع file_get_contents اطلاعات آن را می خوانیم، همچنین برای اطمینان از قابل ویرایش بودن فایل، با تابع chmod مجوزهای ویرایش (permission) را بر روی عدد 0755 تنظیم می کنیم.
- اگر حجم فایل بیشتر از 0 بایت بود یا اینکه فایل خالی نبود، یعنی قبلا آماری در آن ثبت شده است، در این صورت، آمار باید به صورت نمونه زیر ثبت شده باشد:

24|92|124|2017-25-26

در اینجا عدد اول تعداد بازدیدهای امروز، عدد دوم بازدیدهای دیروز، عدد سوم بازدید کل و عبارت آخر تاریخ آخرین ویرایش فایل مزبور است، همان طور که ملاحظه می کنید از یک جدا کننده با علامت (|) استفاده کرده ایم، این جداکننده وقتی که با تابع explode کار می کنیم لازم است و می توان با آن بخش های مختلف را از هم تفکیک و تجزیه کرد و نتیجه را به صورت یک آرایه درآورد.

- زمانی که اطلاعات به آرایه تبدیل می شوند، می توان به مقادیر کلیدهای آن دسترسی داشت، به طور مثال در کد بالا اگر با print_r از متغیر split_file$ خروجی بگیریم، نتیجه به شکل نمونه زیر خواهد بود.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

ملاحظه می کنید که شمارش کلیدها از صفر شروع شده و تا 3 ادامه پیدا می کند، به طور مثال کلید 3 تاریخ آخرین ویرایش فایل را در خود دارد .


- در گام بعدی بررسی می کنیم تا ببینیم آیا تاریخ آخرین ویرایش فایل برابر تاریخ امروز است یا خیر، اگر این طور باشد بازدید امروز و بازدید کل باید افزایش یابند، اما اگر تاریخ امروز با تاریخ آخرین ویرایش تفاوت کند، پس محاسبه بازدیدها وارد یک روز جدید شده و آمار فعلی باید به عنوان آمار دیروز در نظر گرفته شوند و بازدید امروز نیز از نو شروع شده و نهایتا بازدید کل نیز افزایش یابد (درک صحیح عملکرد اسکریپت با کمی تامل و آشنایی با مبحث آرایه ها آسان می گردد).
- اما اگر حجم فایل بیش از 0 بایت نبود یا اینکه فایل خالی باشد، پس اولین باری است که اطلاعات در آن ذخیره می شود، لذا آمار امروز برابر 1، آمار دیروز برابر 0 و آمار کل برابر با 1 خواهد بود.
- در نهایت نیز با توابع fopen و متد +w و همچنین fwrite و fclose فایل را بازکرده و اطلاعات جدید را در آن می نویسیم، در اینجا اگر در برخی سرورها با وجود استفاده از تابع chmod با خطای سطح دسترسی پائین برای ویرایش فایل مواجه شدید، باید به کنترل پنل هاست خود رفته و به صورت دستی مجوزهای ویرایش (permission) را بر روی عدد 755 تنظیم کنید.
- در قسمت دوم اسکریپت، تعداد افراد آنلاین را محاسبه می کنیم، برای این کار ابتدا در آرایه config_array$ زمان فعلی، IP کاربر و آدرس فایل را مشخص می کنیم (مقادیر آرایه به صورت کلیدهای 0 تا 2 در دسترس هستند).
- در اینجا از دو علامت جدا کننده استفاده می کنیم، علامت (\r\n) که برای ایجاد یک خط جدید و آرایش ردیفی اطلاعات هر کاربر کاربرد دارد و علامت (|) که بین IP و زمان آن تفکیک ایجاد می کند، به فرض:

127.0.0.1|20170526134434
127.0.0.2|20170526134324
127.0.0.3|20170526134233

نکته: علامت (\r\n) قابل روئیت نیست، ولی باعث ایجاد خط جدید می شود و در فایل وجود دارد.

- ابتدا در یک حلقه foreach کلیدهایی که مقادیر خالی دارند را از آرایه حذف می کنیم (با استفاده از unset)، در واقع این کار برای جلوگیری از محاسبه آخرین خط در تعداد افراد آنلاین است (آخرین خط صرفا علامت (\r\n) را در خود دارد و لذا مقادیر آن خالی است، برای دیدن جزئیات، فایل visit-online.txt را با یک ویرایشگر (مانند ++Notepad) که شماره خطوط را نشان دهد باز کنید، خواهید دید که خط آخر مقادیری ندارد).
- در حلقه foreach بعدی IP و زمان کاربرانی که از حالت آنلاین خارج شده اند (یعنی بیش از حداکثر زمان تعیین شده غیرفعال بوده اند) را حذف می کنیم، علاوه بر این اطلاعات قبلی کاربر فعلی را نیز از لیست آرایه حذف می کنیم.
- اکنون تعداد IP های باقی مانده را محاسبه کرده و به همراه کاربر فعلی در متغیر online$ مقداردهی می کنیم.
- سپس آمار کاربرانی که آنلاین هستند و کاربر فعلی را به طور مجدد در فایل visit-online.txt ذخیره می کنیم، این کار برای جلوگیری از افزایش بیش از حد حجم فایل مفید است (اگر این کار را نکنیم، اطلاعات قدیمی بی جهت در فایل ما ذخیره شده و حجم فایل به مرور و به طور مداوم افزایش می یابد).
- در نهایت نیز متغیرهای اصلی برنامه را به خروجی می دهیم، برای این کار از دستور echo استفاده کرده ایم.
ثبت دامنه و فروش هاست، سامانه پیامک، طراحی سایت، خدمات شبکه
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
  | دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.

sms: 10004673  - 500021995
پاسخ
 سپاس شده توسط farnaz


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
  سورس پشتیبان گیری از دیتابیس با php saberi 0 1,210 ۹۷/۱/۱۵، ۱۲:۵۹ صبح
آخرین ارسال: saberi
  محاسبه و نمایش پیج رنک گوگل با php saberi 0 1,815 ۹۴/۶/۲۳، ۰۶:۵۰ عصر
آخرین ارسال: saberi
  نمایش قسمتی از متن و پاراگراف با php saberi 0 2,572 ۹۴/۶/۲۳، ۰۶:۲۱ عصر
آخرین ارسال: saberi

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان