یه سوال از نوع بهینه سازی !!!

sharktech

کاربر فعال
یه سوال در مورد استفاده بهینه از سرور و دیتابیس برام پیش اومده که خوشحال میشم دوستان نظرشونو بگن.

خوب بریم سر اصل مطلب.

ما یه سایت داریم که می خوایم دینامیک باشه, حالا برای دینامیک بودن سایت بهتره از دیتابیس کمک بگیریم یا از اینکلود کردن فایل ؟

مثلا قسمت منوی سایت, ما بیایم همه قسمتهای منو رو که قراره دینامیک باشه, مثل : تیتر, لینک و ... رو در دیتابیس ذخیره کنیم یا نه, بیایم همه این قسمت ها رو درون یه فایل به نام منو قرار بدیم و تغییرات منو رو در اون فایل ذخیره کنیم.

ممنون میشم, بهترین راه رو از لحاظ بهینه سازی منابع سرور بهم بگین.

مرسی
 

k2-4u

Well-Known Member
بیایم همه این قسمت ها رو درون یه فایل به نام منو قرار بدیم و تغییرات منو رو در اون فایل ذخیره کنیم.
این خیلی بهتره .
روشی یه که اکثر cms های معروف انجام میدن
 

sharktech

کاربر فعال
حالا چطوری میشه اینکارو با فایل انجام داد ؟

آیا کلاس خاصی داره ؟ یا یه راه ساده ؟

آخه من زیاد با فایلها کار نکردم.

مرسی
 

k2-4u

Well-Known Member
با استفاده از دستور
include
include_once
require
require_once

اونهای که once دارن به این معنی هستند که اگر 2 بار یک فایل رو اینکلود کنید ارور میدن
include اگر فایل ما موفقیت اینکلوید نشه اسکریپ رو ادامه میده
require اگر فایل ما موفقیت اینکلوید نشود از ادامه اسکریپ جلو گیری می کنه

اینجا هم کلی مثال است
php.net/include
php.net/require
php.net/require_once

یک مثال ساده
PHP:
if($a==1){

	reqire_once('filename.php');
	reqire_once('filename.html');
	reqire_once('filename.htm');
}
 

eAmin

Well-Known Member
از xml یا json استفاده کن، از هر لحاظ می تونه برای کار شما این دو گزینه مناسب باشه.
 

k2-4u

Well-Known Member
تشكر !
مي شه يه نمونشو بگي بريم بررسي كنيم ؟
مثلا phpnuke
رو شما اگر نگاه کنید همه بلاک هاش با include به برنامه اضافه میشن
مگر اینکه داخل بلاک فقط مطلب باشه
------
البته من ساختار اصلی اسکریپ مثل
قالب و ... اینا رو میگم نه مطالب داینامیک
-----

شما هرچی از اطلاعات دیتا بیس رو توی فایل بریزی سرعت میره بالاتر چون کار با db کم میشه
 

sharktech

کاربر فعال
ممنون از همگی.

اما منظور من نوشتن محتویات منو یا ... در فایل و خوندن همون اطلاعات از فایل و نمایش اون بود.

آخه من برای نوشتن یه چیزی توی php کلی دردسر کشیدم و بالاخره هم نوشتمش, اما بعدا فهمیدم که راه ساده تری هم بوده !!!!

برای همین گفتم که آیا راهی, کلاسی, چیزی داره که بعدا مثل همون قضیه آدم .... :lol:

از xml یا json استفاده کن

آره دیدم از xml استفاده میشه اما خودم تا حالا از xml استفاده نکردم, و این json چیه ؟ راستی میشه یه مثال بزنید, مرسی.
 

eAmin

Well-Known Member
آره دیدم از xml استفاده میشه اما خودم تا حالا از xml استفاده نکردم, و این json چیه ؟ راستی میشه یه مثال بزنید, مرسی.

فکر نمی کنم نیازی به مثال بنده باشه، ولی در لینکهایی که زیر معرفی می کنم، تعداد زیادی مثال وجود داره که مسلما متوجه می شید:

XML:
http://ir.php.net/manual/en/book.xml.php

معرفی Json:
http://www.json.org/json-fa.html

و نحوه ی بکارگیری در PHP:
http://ir.php.net/manual/en/function.json-decode.php
 

foranyone

Well-Known Member
سیستم های DBMS هم جداول رو به صورت فایل ذخیره میکنن !

هر کوئری که اجرا میشه 4 هزارم ثانیه طول میکشه ! ( از اینم بهینه تر؟)

چرا از فایل استفاده کنیم ؟

به نظر من که دیتابیس بهتره . فقط در شرایطی که امکان DMBS نیست فایل تصویه میشه

phpnuke هم شاید همین قضیه رو در نظر گرفته و از فایل سیستم استفاده کرده .
 

sharktech

کاربر فعال
حالا این dmbs چی هست ؟ یه توضیحی بدین.

و از کجا میشه فهمید که امکان dmbs هست یا نه ؟

مرسی
 

k2-4u

Well-Known Member
سیستم های dbms هم جداول رو به صورت فایل ذخیره میکنن !

هر کوئری که اجرا میشه 4 هزارم ثانیه طول میکشه ! ( از اینم بهینه تر؟)

چرا از فایل استفاده کنیم ؟

به نظر من که دیتابیس بهتره . فقط در شرایطی که امکان dmbs نیست فایل تصویه میشه

phpnuke هم شاید همین قضیه رو در نظر گرفته و از فایل سیستم استفاده کرده .
خب به صورت فایله ولی این فایل رو کی باز می کنه ؟ -> برنامه dbms که کانکشنش باز میشه
این فایل باید باز بشه کلی sort و جستجو بشه ..... تا نتیجش بیرون بیاد

اون فایلی که می خواد باز بشه کجا باز می شه ؟ -> تو رم
4 هزار ثانیه روی چه سروری ؟ با چقدر اطلاعات ؟ چند کاربر ؟
در کل فایلینگ برای اطلاعاتی که عوض نمیشن یا خیلی خیلی به ندرت عوض میشن خیلی بهتره
 

foranyone

Well-Known Member
خب به صورت فایله ولی این فایل رو کی باز می کنه ؟ -> برنامه dbms که کانکشنش باز میشه
این فایل باید باز بشه کلی sort و جستجو بشه ..... تا نتیجش بیرون بیاد

اون فایلی که می خواد باز بشه کجا باز می شه ؟ -> تو رم
4 هزار ثانیه روی چه سروری ؟ با چقدر اطلاعات ؟ چند کاربر ؟
در کل فایلینگ برای اطلاعاتی که عوض نمیشن یا خیلی خیلی به ندرت عوض میشن خیلی بهتره


خب کوروش اگه قرار باشه اینجوری فکر کنیم که نمیشه !

چون php خودش تفسیر میشه ! اگه قرار باشه این زمان رو هم به عنوان سربار تلقی کنیم اون موقع static

بنویسیم بهینه تر در میاد !

دیتابیس تو رم سرور باز میشه رو فایل هم ذخیره کنی بازم رو رم باز میشه ( از این لحاظ فرقی نمیکنه )

در ضمن فرض کن تو یه سیستم multi user خودت چطور باید بشینی توابعی رو در نظر بگیری که فایل رو قفل کنه

اجازه نوشتن همزمان نده ....

یعنی در اصل میای خودت یه DBMS برا خودت مینویسی !:)

از نظر من بازم DBMS بهتره .

با فیل منم به شرط تغیر کم و اطلاعات ثابت موافقم !
 

k2-4u

Well-Known Member
یه چیز جالب بگم حمید .
با یک سرور linux و یک وب سرور apache همراه با دیتا بیس mysql
و زبان C خودمون میشه یک سایت با سرعت و قدرت بسیار بالا همرا با تکنولوژی های web2 ساخت!
به این صورت که ابتدا manual آپاچی رو مطاله میکنی سپس یک ماژول با c برای apache میسازی
که در این ماژول هم به وسیله shell به دیتا بیس وصل میشی و.....
که اگر بخوای حساب کنی سرعت امنیت و قدرت خیلی بیشتر از php میشه !!!
ولی نیاز به کد نویسی و وقت خیلی بیشتری هم هست .
در حال حاضر سایتی مثل یاهو از اینطور تکنولوژی های استفاده کرده
-----
در کل منظورم اینه که هر چیزی جای خودشو داره
و هر سیستم و زبان های که امروزه اومده حدفی داشته
مثلا php اومده کار رو ساده کرده ! و راحت به همه چی متصل مشه
کد نویسیش سادست و خیلی راحت میشه روی سرور برای هاستینگ های share اونو راه اندازی کرد
باور کن اگر php این قابلیت آخر رو نداشت در حال حاظر اینقدر موفق نبود
-------
دیتابیس تو رم سرور باز میشه رو فایل هم ذخیره کنی بازم رو رم باز میشه ( از این لحاظ فرقی نمیکنه )
چرا فرق می کنه چند مرحله ای اضافه داره

در ضمن فرض کن تو یه سیستم multi user خودت چطور باید بشینی توابعی رو در نظر بگیری که فایل رو قفل کنه

اجازه نوشتن همزمان نده ....
بله . اینی که شما میگی یکی از حدف های ساخت DBMS بوده!

یعنی در اصل میای خودت یه DBMS برا خودت مینویسی !
بله ! حمید . من منظورم چنین شرایطی نیست


همون طور که خودت گفتی
با فایل منم به شرط تغیر کم و اطلاعات ثابت موافقم !
منم همینو گفتم!!!
 

foranyone

Well-Known Member
یه چیز جالب بگم حمید .
با یک سرور linux و یک وب سرور apache همراه با دیتا بیس mysql
و زبان C خودمون میشه یک سایت با سرعت و قدرت بسیار بالا همرا با تکنولوژی های web2 ساخت!
به این صورت که ابتدا manual آپاچی رو مطاله میکنی سپس یک ماژول با c برای apache میسازی
که در این ماژول هم به وسیله shell به دیتا بیس وصل میشی و.....
که اگر بخوای حساب کنی سرعت امنیت و قدرت خیلی بیشتر از php میشه !!!
ولی نیاز به کد نویسی و وقت خیلی بیشتری هم هست .
در حال حاضر سایتی مثل یاهو از اینطور تکنولوژی های استفاده کرده

به نظرم کاری که بقیه بلد نباشن یعنی امنیت :green:

مسلما این روش امنیتش بیشتره موافقم:wink:

در کل منظورم اینه که هر چیزی جای خودشو داره

منم همینو میگم ، منظورم اینه که دوستی که این سوال رو پرسیدن سایت یاهو که نمی نویسن ، مسلما بهینگی

و حساسیت به این موضوع تو پروژه های خیلی بزرگ خودش رو بیشتر نشون میده .

الان استفاده از DBMS برای پروژه های معمولی و تقریبا بزرگ ( و نه خیلی بزرگ ) خیلی خوب جواب میده !

سایت istgah رو در نظر بگیرید ترافیک بالایی داره و از دیتابیس هم استفاده میکنه وقتی ترافیک سایت بالاست

به نظر من اهمیت سرور بیشتر از برنامه نویسیه ! چون برنامه نویسی شما هرچقدر هم خوب باشه

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

Mohammadreza

Well-Known Member
با عرض ارادت به هر دو عزيز من با كوروش موافق ترم !
ما به عنوان برنامه نويس كاري به سرور نداريم بايد برناممون رو بهينه بنويسيم ...
در مورد اينكه استفاده از فايل بهتره شكي نيست چون در اين جا ما فقط يك فايل رو مورد بررسي قرار ميديم !
ولي در استفاده از ديتابيس يك فايل كه پرينت مي كنه اطلاعات رو بايد بخونيم يكي فايلي كه اطلاعات رو از ديتابيس ميگيره و مهم تر از همه ديتابيس رو بايد باز كنه و خروجي بگيره !
در ضمن اين كه بخوايم براي منو از فايل استفاده كنيم كه نخوايم به سرور رجوع كنيم ، واسه سايت هاي با حجم پايگاه داده بالاست كه به قول كوروش تا بياد سورت كنه و ... طول مي كشه به سرورم فشار مياره ! ( يا واسه سايت هاي ترافيك خيلـــــــي بالا ... )
در سايت هاي معمولي براي پيچيده نشدن كار بهتره از همون ديتا بيس استفاده كنيم !
 

k2-4u

Well-Known Member
منم همینو میگم ، منظورم اینه که دوستی که این سوال رو پرسیدن سایت یاهو که نمی نویسن ، مسلما بهینگی

و حساسیت به این موضوع تو پروژه های خیلی بزرگ خودش رو بیشتر نشون میده .
بله
سایت istgah رو در نظر بگیرید ترافیک بالایی داره و از دیتابیس هم استفاده میکنه وقتی ترافیک سایت بالاست
بله کاملا تایید میشه ولی من یک دوستی دارم (که نمی خوام نام ببرم ) سایتی داره که خیلی کمتر از istgah بازید داره
ولی چون دیتابیسش درست طراحی نشده بازگذاری صفحه خیلی طولانیه و در کل سایت مشکل داره


به نظر من اهمیت سرور بیشتر از برنامه نویسیه
این جمله ثابت کردنش خیلی سخته
من خیلی برنامه نویس های رو دیدم که با اطمینان گفتن سیستم ما زیر فشار دوام میاره ولی
وقتی بازدید رفته بالا سیستم با شکل موجه شده در صورتی که اگر یک سیستم بهینه دیگه با همین مشخصات سرور مشکل نداشت
در آخر هم این برنامه نویس مجبور شد برای پوشوندن مشکل سرور رو به یک سرور قدرت مند تر و گرون تر منتقل کنه
در صورتی که این مشکل از برنامه نویسه که بهینه کار نکرده

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

sharktech

کاربر فعال
جالبه میون اینهمه برنامه نویس با تجربه, هیچکس حرفی از کش به میون نیاورد !!!

اما وجود قضیه ای به نام کش توی برنامه نویسی php نشون میده که, خوندن اطلاعات از فایل به مراتب سریعتر و کم پردازش تر از خوندن از دیتابیسه.

از دیتابیس برای ذخیره و نگه داری اطلاعات استفاده میشه, چون راحت, ایمن و تغییر در اطلاعات به مراتب ساده تر از کار کردن با فایله.

اما برای افزایش سرعت و کم کردن حجم پردازشی برای اطلاعاتی که قراره تا مدتی تغییر نکنن, اونو توسط سیستم کش در فایل ذخیره میکنن و برای خوندن دوباره چندین و چندباره از فایل کش استفاده میکنن.
 

جدیدترین ارسال ها

بالا