PDA

نسخه کامل مشاهده نسخه کامل : کمک در ادیت php



98patogh
05-09-2010, 22:37
یه مدت رفتیم دو سه تا ebook خوندیم در مورد php یه چیزایی یاد گرفتیم که خیلی بهم کمک کرد

اما بازم یه سری مشکلات دارم ممنون میشم پایین حل شه این سه تا مشکل من تا کار این فایلم تموم شه

من دارم آمار کاربران ر مثل نیوک از ویبلوتین می کشم بیرون و طبق حرف ها زیرم راهنمایی میخوام


************************************************** *

برای اینکه بفهمیم جدیدترین کاربر کیه و اینکه وقتی روی اسم کاربر کلیک میشه بره به پروفایل کاربر

من سکلت کردن جدیدترین کاربر که قبلا علی جان انجام داده بودن رو گذاشتم که این بود








برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

به مشکل خوردم و درست نشون نمیده مثلا 1000 تا کاربر قبل تر رو نشون میده یا چیزی شبیه این

آمدم asc رو به desc تبدیل کردم








برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حالا 10 تا کاربر قبل تر رو نشون میده یا چیزی شبیه این دقیتر از قبلی شد اما بازم به طور واقعی کاربره آخر رو نشون نمیده

حالا ممنون میشیم این رو طوری تغییر بدید که جدیدترین کاربر رو دقیق نشون بده

*******************************
*******************************
*******************************

و با این پایینی سلکت کردم که مهمانهایی که در حال حاضر در سایت حضور دارن رو نشون بده اما با فاصله زیاد نشون میده مثلا 20 نفر هستند می زنه 300 مهمان








برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


اینم ممنون میشم بگید اشتباهم کجا بوده ؟


*******************************
*******************************
*******************************

و آخریش اینه که با پایینی میخوام جمع مهمان ها و اعضای سایت که در حال حاضر در سایت هستند رو نشون بدم اما بازم با فاصله خیلی بالا نشون میده

مثلا 10 تا مهمان داریم و 20 نفر عضو سایت جمعشون رو نشون میده 500 نفر








برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



مرسی از زحمتی که قراره بکشیداگه فکر میکنید لازمه خودتون طریق صحیح سلکت کردن رو توضیح بدین

98patogh
06-09-2010, 00:09
خوب مشکل اولیم رو خودم حل کردم به این شکل


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

فقط مونده مشکل دومی و سومی :31:

neopersia
06-09-2010, 04:47
مشکل دوم و سوم از کد نیست از منطق پشتشه. سشنها وضعیت آنی رو برنمیگردونن! هر سشن بعد از آخرین فعالیت کاربر، به اندازه طول عمر سشن فعال باقی میمونه. (در صورتی که یوزر ساین اوت نکنه و یا موقع ساین اوت رکورد یوزر از سشن حذف نشه)
این معنیش اینه که اگر طول عمر سشن شما 30 دقیقه هست، قسمت مربوط به کاربران آنلاین که نوشتید تعداد کل رکوردهای موجود از 30 دقیقه پیش رو بر میگردونه نه اونایی رو که الان هم آنلاین هستن


راه حلش هم اینه که شما یک فیلد با نام lastactivity به جدولتون اضافه کنید (اگر نداره) و در هر بازدید این رو با تمبر زمانی یونیکس آپدیت کنید. موقع کوئری کردن کاربران آنلاین هم یک شرط براش اضافه کنید که مثلاً کاربرانی رو که آخرین فعالیتشون از 5 دقیقه پیش به بعد بوده بشمره.

با فرض اینکه فعالیت از 5 دقیقه (300 ثانیه) قبل رو آنلاین حساب کنیم کوئری دوم و سومتون به تریتیب اینجوری میشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این رو هم اضافه کنم که در صورتی که تعداد بازدید (تعداد رکورد موجود در جدول سشنها) خیلی زیاد باشه، این پروسه آپیدیت کردن زمان آخرین فعالیت و مخصوصاً شمردن تعداد کاربرهای آنلاین میتونه خیلی به دیتابیس فشار بیاره
اگر برای بازدید بالا مینویسید حتماً کوئری ها رو برای چند دقیقه کش کنید

98patogh
06-09-2010, 11:31
سلام خیلی ممنون جواب دادی من یک راهی دیگه هم پیدا کردم اما در آخرش به مشکل میخورم چون تا حالا تجربه اینجوری نوشتن رو نداشتم در ضمن خیلی کم از php می فهمم و هر چی دارم از سایت های خارجی یاد می گیرم و مشکلمو اونجا حل می کنم

ببین قبلا که اینطوری سلکت می کردیم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


خوب برای اینکه مقدار رو نشون بدیم این کارو می کردیم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


حالا راهی که من پیدا کردم طبق گفته یکی سایت php اینطوری هست


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



حالا مقدار رو باید چطوری نشون داد من تو کف همین قستم آخه فکر میکنم این سلکت کردم نه فشار میاره نه مشکلی داره همین هم که مقدار رو از row میشماره خودش می تونه کلی دلگرمی باشه برای این که مقدار همیشه واقعی هست


اینطوری مثل قبلی ها باید مقدار رو نشون داد ؟؟؟


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



یا به شکل دیگه ممنون میشم راهنمایی کنید

98patogh
06-09-2010, 14:02
من تو کف اینم که خود وی بی چطور این رو اینقد دقیق اعلام می کنه

کاربران حاضر در انجمن ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]): 35 (تعداد 16 عضو و 19 مهمان)

از طریق چه کدی ما هم دقیقا مثل خود وی بی سلکت کنیم

در ضمن من lastactivy رو توی تبل session دارم


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


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

neopersia
06-09-2010, 15:29
حالا راهی که من پیدا کردم طبق گفته یکی سایت php اینطوری هست


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


حالا مقدار رو باید چطوری نشون داد من تو کف همین قستم آخه فکر میکنم این سلکت کردم نه فشار میاره نه مشکلی داره همین هم که مقدار رو از row میشماره خودش می تونه کلی دلگرمی باشه برای این که مقدار همیشه واقعی هست


اینطوری مثل قبلی ها باید مقدار رو نشون داد ؟؟؟


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

تابع mysql_num_rows عدد بر میگردونه. یعنی guestonline$ خوش یک عدد هست نیاز نیست مثل ارایه مقدارشو بگیرید.
اما این کدی که نوشتید کار نمیکنه چون mysql_num_rows پارامتری که میگیره باید ریسورسی باشه که از mysql_query برگشته، نه آرایه ای که از mysql_fetch_array برمیگرده.

کار هم میکرد پدر سرور درمیومد! چون میاد همه اطلاعات موجود در رکوردهای دیتابیس رو میخونه و میفرسته برای php اونجا هم تبدیل به آرایه میشن بعد تعداد آرایه ها شمرده میشه. این یعنی ظرف مدت کمتر از 24 ساعت هاست ساسپند میشه
تازه اون کد که من دادم و گفتم ممکنه برای سرور سنگین بشه هیچ رکوردی رو از دیتابیس به php نمیفرستاد! فقط تعداد رکوردها رو میشمرد

هر کی گفته سایت php اینجوریه برا خودش گفته! سورس سایت php رو میتونید توی همه صفحاتش ببینید. یه لینک برای مشاهده سورس پایین هر صفحه داره. اگر همیچین سبک کدنویسی اونجا دیدید به منم نشون بدید خیلی دلم میخواد ببینم!


من تو کف اینم که خود وی بی چطور این رو اینقد دقیق اعلام می کنه

کاربران حاضر در انجمن ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]): 35 (تعداد 16 عضو و 19 مهمان)

از طریق چه کدی ما هم دقیقا مثل خود وی بی سلکت کنیم

در ضمن من lastactivy رو توی تبل session دارم


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


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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

از ظاهر این کد که نوشتید برمیاد هر کسی رو که ظرف مدت 106 دقیقه گذشته سشن داشته آنلاین معرفی میکنه! (چقدر دقیق :46:)
باز هم نه تنها فقط رکوردها رو نمیشمره بلکه فیلدهای خونده شده رو پاس میده به php. یعنی دوباره همون آش و همون کاسه!

شما از همون کوئری که من نوشتم استفاده کن بعداً یه مقدار در مورد کش کردن مطالعه کن و نتیجه کوئری رو برای چند دقیقه کش کن مشکل پرفورمنس پیدا نمیکنه
اگر هم با نوشتن قسمت php اون مشکل دارید اینجوری میشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

98patogh
06-09-2010, 16:21
خوب من مثل اینکه مغزم هنگ کرده آقا ممنون میشم زحمتش رو خودت بکشی در این قسمت از کدم

ببخشید واقعا ولی مخم دیگه هنگ کرده




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

neopersia
06-09-2010, 16:45
با همون سبکی که نوشته بودید اصلاح کردم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در ضمن vb خودش تعداد پستها و تاپیکها و یوزرها (این آخری رو مطمئن نیستم) رو در یک جدول نگهداری میکنه که هر بار اینها رو شمارش نکنه (اینم یک دلیل دیگه که شمارش زیاد ممکنه برای سرور سنگین باشه :دی)
نام جدولش الان یادم نیست اما قبلن که برای وی بی یه سری ماژول نوشتم یادمه که این مجموع ها رو توی دیتابیس داشت

به جای اینکه شما اینها رو شمارش کنید بهتره که همون جدول رو پیدا کنید و تعداد رو ازش بخونید. خیلی بهینه تر میشه