PDA

View Full Version : سوال: اگر سایتی طوری نوشته شد که هر اسکریپتش حداقل 5 بار به دیتابیس وصل بشه، سرعت اجرا کم نمی شه؟



phpweb
یک شنبه 24 بهمن 1389, 01:45 صبح
اگر سایتی طوری نوشته شد که هر اسکریپتش در هر صفحه حداقل 5 بار به دیتابیس وصل بشه، در بازدیدهای بالا سرعت اجرا کم نمی شه؟

mtchabok
یک شنبه 24 بهمن 1389, 10:13 صبح
البته که سرعت سیستم پایین میاد . چونکه مقدار زیادی از منابع سیستم صرف اتصال به پایگاه داده میشه و این کار در یک اسکریپت اصلا توصیه نمی شه و بهتره که یکبار اتصال برقرار بشه و تا آخر اسکریپت از استفاده بشه .

phpweb
یک شنبه 24 بهمن 1389, 13:29 عصر
البته که سرعت سیستم پایین میاد . چونکه مقدار زیادی از منابع سیستم صرف اتصال به پایگاه داده میشه و این کار در یک اسکریپت اصلا توصیه نمی شه و بهتره که یکبار اتصال برقرار بشه و تا آخر اسکریپت از استفاده بشه .

ممنون از راهنماییتون.

خوشحال می شم اگر سایر دوستان هم نظر بدن.

sattaryekta
یک شنبه 24 بهمن 1389, 13:32 عصر
بیشترین زمان در اجرای یک اسکریپت php صرف ارتباط با سرور پایگاه داده میشه.

xoogle.ir
یک شنبه 24 بهمن 1389, 13:37 عصر
ببینید شما از تابع mysql_connect یک بار در هر صفحه استفاده کنید نه بیشتر اما اگر منطورتون کوئری گرفتن هست که به نظر من در اون صورت هم سعی کنید که تعداد کوئری هاتون پایین تر باشه و مثلا با یک کوئری تمام اطلاعاتی که احتیاج دارید رو بگیرید. اما تعداد 5 کوئری تعداد نرمال و مناسبی هست.

phpweb
یک شنبه 24 بهمن 1389, 22:40 عصر
ببینید شما از تابع mysql_connect یک بار در هر صفحه استفاده کنید نه بیشتر اما اگر منطورتون کوئری گرفتن هست که به نظر من در اون صورت هم سعی کنید که تعداد کوئری هاتون پایین تر باشه و مثلا با یک کوئری تمام اطلاعاتی که احتیاج دارید رو بگیرید. اما تعداد 5 کوئری تعداد نرمال و مناسبی هست.

من هم با نظر شما موافق هستم. بنظرم اگه هر کاری کنیم بازم مجبوریم که در هر اسکریپت حداقل دو - سه بار برای گرفتن داده های مورد نیاز به دیتابیس وصل بشیم.

maysam.m
سه شنبه 26 بهمن 1389, 12:52 عصر
سلام

در یک سایت معمولی به نظر من بیشتر از 5 بار باید کوئری گرفت! با یه حساب سر انگشتی می بینیم برای گرفتن هر یک از اطلاعاتم باید یک کوئری بفرستیم. مثلا مواردی مانند: عنوان و متا تگهای سایت، نمایش پستهای اصلی، نمایش دسته ها، نمایش لینکها، نمایش و ارسال اطلاعات کانتر سایت، نمایش تعداد مطالب و اطلاعات بسیار دیگری که با توجه به هر وبسایت فرق میکنه!
به نظر من 5 تا کوئری مشکلی ایجاد نمیکنه!
البته باید توجه داشت که وبسایتهای با بازدید بالا اطلاعتشون رو کش میکنند و در بازدیدهای بالا خیلی با مشکلی مواجه نمیشن!

mtchabok
چهارشنبه 27 بهمن 1389, 02:51 صبح
منم یه سوالی دارم و اونم اینکه به نظر شما تعداد کوئری ها تا چه مقداری باشه معقول هس و تا چه اندازه ای رو میشه گفت که متعادل هس ؟

eshpilen
چهارشنبه 27 بهمن 1389, 11:41 صبح
اتصال به ديتابيس با كوئري دادن فرق ميكنه.
وقتي ميگيد اتصال در وهلهء اول اين اصطلاح به اتصال اوليه به ديتابيس گفته ميشه كه شامل مراحلي هست كه طي اون نام كاربري و پسورد و تنظيمات مختلف به سرور ديتابيس ارسال ميشن و اگر مورد پذيرش واقع شدن سوكت براي ارتباط ايجاد ميشه. اين مراحل دو طرفه و هزينه بر هستن، اما خوشبختانه اغلب نيازي نداريم در يك اسكريپت بيش از يك بار اين كار رو انجام بديم.
كوئري دادن ارتباطهاي بعدي از طريق سوكت هاي ايجاد شده هست.
فكر ميكنم شما بايد اول منطق برنامهء خودتون رو درست كنيد، بدون اينكه به تعداد كوئري ها فكر كنيد. اول خوانايي و امنيت برنامه مهم هست. بعد اگر ديديد سرعت كمه ميتونيد بهينه سازي كنيد. يا مثلا اگر ديديد ميشه براحتي، و بدون مخدوش شدن بيش از حد خوانايي و امنيت و سادگي برنامه، كار چند كوئري رو با يك كوئري انجام داد ميتونيد، اونا رو ادغام كنيد و غيره.
من نميدونم شما برنامه نويس سيستمي هستيد كه اينقدر به اين چيزا فكر ميكنيد؟ :متفکر:
اگر ميخوايد سرعتتون به هر بهايي بالا بره خب چرا بجاي ديتابيس از روشهاي ديگه مثل ذخيره در فايل كه ميتونن سريعتر باشن استفاده نميكنيد؟ يا چرا دنبال زبانهاي سطح پايين مثل سي و حتي اسمبلي نميريد؟
اگر دقت كنيد همهء اين كارهايي كه نميكنيد بخاطر خوانايي، امنيت، انعطاف و سادگي برنامه و سرعت و راحتي برنامه نويسي هست. پس در يك زبان و محيط سطح بالا هم بيخود خودتون رو محدود نكنيد وقتي كسي محدوديتي وضع نكرده و در عمل به مشكلي برنخورديد. البته بحث اين موارد از نظر داشتن دانش و مهارت بهينه سازي بد نيست، اما اجراي اونها لزوما ضرورتي نداره و به شرايط عملي و نياز برنامه و الگوريتم در جهت خوانايي و امنيت و انعطاف كافي بستگي داره.

phpweb
چهارشنبه 27 بهمن 1389, 11:54 صبح
اتصال به ديتابيس با كوئري دادن فرق ميكنه.
وقتي ميگيد اتصال در وهلهء اول اين اصطلاح به اتصال اوليه به ديتابيس گفته ميشه كه شامل مراحلي هست كه طي اون نام كاربري و پسورد و تنظيمات مختلف به سرور ديتابيس ارسال ميشن و اگر مورد پذيرش واقع شدن سوكت براي ارتباط ايجاد ميشه. اين مراحل دو طرفه و هزينه بر هستن، اما خوشبختانه اغلب نيازي نداريم در يك اسكريپت بيش از يك بار اين كار رو انجام بديم.
كوئري دادن ارتباطهاي بعدي از طريق سوكت هاي ايجاد شده هست.
فكر ميكنم شما بايد اول منطق برنامهء خودتون رو درست كنيد، بدون اينكه به تعداد كوئري ها فكر كنيد. اول خوانايي و امنيت برنامه مهم هست. بعد اگر ديديد سرعت كمه ميتونيد بهينه سازي كنيد. يا مثلا اگر ديديد ميشه براحتي، و بدون مخدوش شدن بيش از حد خوانايي و امنيت و سادگي برنامه، كار چند كوئري رو با يك كوئري انجام داد ميتونيد، اونا رو ادغام كنيد و غيره.
من نميدونم شما برنامه نويس سيستمي هستيد كه اينقدر به اين چيزا فكر ميكنيد؟ :متفکر:
اگر ميخوايد سرعتتون به هر بهايي بالا بره خب چرا بجاي ديتابيس از روشهاي ديگه مثل ذخيره در فايل كه ميتونن سريعتر باشن استفاده نميكنيد؟ يا چرا دنبال زبانهاي سطح پايين مثل سي و حتي اسمبلي نميريد؟
اگر دقت كنيد همهء اين كارهايي كه نميكنيد بخاطر خوانايي، امنيت، انعطاف و سادگي برنامه و سرعت و راحتي برنامه نويسي هست. پس در يك زبان و محيط سطح بالا هم بيخود خودتون رو محدود نكنيد وقتي كسي محدوديتي وضع نكرده و در عمل به مشكلي برنخورديد. البته بحث اين موارد از نظر داشتن دانش و مهارت بهينه سازي بد نيست، اما اجراي اونها لزوما ضرورتي نداره و به شرايط عملي و نياز برنامه و الگوريتم در جهت خوانايي و امنيت و انعطاف كافي بستگي داره.

من توی اسکریپتهم فقط یکبار به پایگاه داده متصل می شم و برای کوئری گیری از همین اتصال استفاده می کنم.

با این روش معمولا 5 بار باید کوئری گیری کنم. این کاری که من می کنم باعث کاهش سرعت وب سایت نمی شه؟

eshpilen
چهارشنبه 27 بهمن 1389, 12:09 عصر
فكر نميكنم لزوما باعث كند شدن بيش از حد بشه.
شما ميتونيد با قرار دادن دستوراتي كه زمان رو ثبت ميكنن در ابتدا و انتهاي اسكريپت خودتون، زماني رو كه اجراي اسكريپت شما طول ميكشه محاسبه كنيد. ميتونيد اين زمان رو با كم كردن تعداد كوئري ها هم بررسي كنيد. اما بهرحال اگر زمان اجراي شما تا كسري از يك ثانيه باشه، مهم نيست و مشكل خاصي نداره لزوما.
حالا يه وقت در عمل اگر بخاطر ترافيك زياد سايت و كم بودن منابع سخت افزاري سرعت پايين اومد چيزي هست كه بايد در عمل ديد و براش تمهيد كرد.
نرم افزاري كه ميخواد در شرايط خاص بكار بره با نظر و وسواس خاص نوشته ميشه، نه هر نرم افزاري.
مسلما هرچيزي زمان و منابعي صرف ميكنه. اما مهم اينه كه مجموع اين مقادير در محدودهء قابل قبول باشن.
امروزه، خوانايي، سادگي (كه منجر به بعضي مزاياي ديگه ميشه كه بخاطر اونها اهميت داره)، امنيت، انعطاف و سرعت و راحتي در برنامه نويسي، معمولا مهمترين پارامترها هستن و معمولا بهينه سازي، اثرات منفي روي اين پارامترها ميذاره.
اغلب اين معقول نيست كه ما حتي بخاطر چند دهم ثانيه و اينكه يك سرور بتونه با چند درصد بيشتر ظرفيت سرويس بده، اين پارامترها رو مخدوش بكنيم. بلكه بايد يك تعادل برقرار كرد. تعادل هم در عمل بايد ديده بشه، نه فقط در ذهن ما يا فقط وقتي با ذره بين نگاه كنيم!