PDA

View Full Version : کاربر آنلاین در Yii



amdvbgmail
جمعه 19 دی 1393, 19:31 عصر
با سلام خدمت دوستان
من یه شبکه اجتمایی کوچیک توی ایی نوشتم میخواستم بدونم ، تعداد کاربر آنلاین رو اگه 500 آنلاین داشته باشیم ... روی یه سرور مجازی با چه کانفیگی به نظرتون جواب میده؟ ، چون تجربه شو تا حالا نداشتم . پ

MMSHFE
شنبه 20 دی 1393, 08:20 صبح
بستگی به نحوه کدنویسی شما داره و اینکه چقدر متغیرها رو بهینه تعریف کرده باشین. مثلاً من اگه فقط به فیلدهای id و title مدلها توی یک صفحه نیاز داشته باشم، بقیه رو توی حافظه نمیارم. مثال:

foreach(Posts::model()->findAll(array('select'=>'id,name', 'condition'=>'confirmed=1')) as $post) {
...
}
با چنین شرایطی 500 کاربر آنلاین رو اکثر هاستها جواب میدن.

beh3000
شنبه 20 دی 1393, 17:19 عصر
سلام استاد

چرا فقط در مورد بهینه استفاده کردن فیلدهای جداول گفتین ؟ در مورد ویو ها , تم ها , ... صحبتی نکردین ؟

این گزینه معمولا بیشترین تاثیر رو در استفاده بهینه از رم داره ؟


مثلا همین شبکه اجتماعی که مثال زدن دوستمون با 500 کاربر آنلاین ... توی سرور مجازی با رم 2 گیگ جواب میده با مثلا 2 گیگاهرتز سی پی یو ؟

MMSHFE
یک شنبه 21 دی 1393, 09:23 صبح
دقت کنید که من گفتم مثلاً و این مورد فقط یکی از نکات بهینه نویسی هست که البته تأثیر خیلی زیادی توی مصرف حافظه داره چون کلاً فریمورک Yii مصرف حافظه نسبتاً بالایی داره. برای مثال به این تکه کد دقت کنید:

$posts = Posts::model()->with(array('comments'=>array('select'=>'name,'body','condition'=>'confirmed=1')))->findAll(array('select'=>'name,title,body'));
میبینید که از جدول Posts فقط فیلدهای name و title و body و از جدول Comments فقط فیلدهای name و body استخراج شده چون فقط با همینا توی کد کار دارم و دلیلی نداره بقیه فیلدها توی حافظه بیان. فرض کنید یک پست 50 تا کامنت داشته باشه و برای هر کاربر این 50 تا کامنت بخوان با تمام فیلدهایی که ازشون استفاده هم نکردیم، توی RAM بیان.

اگه این نکات ساده رو رعایت کنید، سروری که گفتین کاملاً جوابگوی چنین سایتی خواهد بود.

beh3000
دوشنبه 22 دی 1393, 11:12 صبح
ممنون

اگه یخورده وقت داریم هم بهتره کوئری هامون رو با DAO بنویسیم به جای AR

amdvbgmail
سه شنبه 23 دی 1393, 08:05 صبح
ممنون از راهنماییتون