تعیین تعداد زیادی ثابت ومتغیر در ابتدای اسکریپت باعث کند شدن سیستم نمی شه؟

phpweb

Active Member
من ابتدای هر کدوم از صفحات سایتم حداقل 75 تا ثابت و متغیر رو باید ست کنم.

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

راستش از این سوالات زیاد برام پیش می یاد:sad:
مثلا توی بازدیدهای بالا تعیین تعداد زیادی سسشن، کوکی، شرط یا اینکلود کردن تعداد زیادی فایل توی سازنده که هر کدوم حداقل 250 خط کد هستن و ... باعث کند شدن سیستم می شه یا نه !

آیا جایی نیست که در این زمینه آمار مشخصی ارائه کرده باشه؟ خود پی اچ پی چنین آماری ارائه نداده؟
 
من ابتدای هر کدوم از صفحات سایتم حداقل 75 تا ثابت و متغیر رو باید ست کنم.

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

راستش از این سوالات زیاد برام پیش می یاد:sad:
مثلا توی بازدیدهای بالا تعیین تعداد زیادی سسشن، کوکی، شرط یا اینکلود کردن تعداد زیادی فایل توی سازنده که هر کدوم حداقل 250 خط کد هستن و ... باعث کند شدن سیستم می شه یا نه !

آیا جایی نیست که در این زمینه آمار مشخصی ارائه کرده باشه؟ خود پی اچ پی چنین آماری ارائه نداده؟

دوست عزیز اگه به صورت بهینه سازی شده ( جلوگیری از تکرار و .. ) بنویسید مشکلی پیش نمیاد.
 

Cyletech

Member
منظور از بهینه سازی ، استفاده بموقع و درست از توابع . شی گرایی . عدم تکرار کدها . به موقع بستن و باز کردن پایگاه داده . مرتب و منظم بیرون کشیدن اطلاعات مورد نیاز فقط از جداول پایگاه داده . عدم تعریف متغیر های اضافی (بعضی ها پیدا میشن و فکر می کنند مقدار نهایی تابع یا هر رشته رو باید به متغیر داد بعد بررسی ها یا هرکار دیگه انجام بشه!) . انتخاب صحیح نوع اتصال به پایگاه داده (mysql - mysqli - pdo) (من PDO رو پیشنهاد می کنم چون از نظر سرعت از mysqli فقط یکم بهتره و به موقع آپدیت میشه) و غیره
 

Domanjiri

Well-Known Member
سلام

آخ جون! بحث های تخصصی!!

اگه رشته ی تحصیلیتون در زمینه کامپیوتر (اختصاصن سخت و نرم) نباشه، بعید میدونم دنبال کردن علیتی این گونه سوال ها براتون جذاب باشه (البته من خودم رشته ی تحصیلیم هیچ ارتباطی با کامپیوتر نداره:green: !)

شما برای رسیدن به پاسخ سوال هاتون، باید در مورد اینکه PHP ( و بطور خاص موتور زند) چطور memory رو مدیریت می کنه تحقیق کنید.(اگه بخوایم تاثیر امکانات سخت افزاری رو بر سرعت اجرای هر برنامه ای نادیده بگیریم)

راجع به ثابت ها سر بسته بهتون بگم:

ما دو نوع ثابت داریم، ثابت هایی که بصورت global قابل دسترس اند( define شدگان!:green:) نمونه:
PHP:
define('WELCOME', 'salam!');
و ثابت هایی که در کلاس ها تعریف می کنیم:
PHP:
const WELCOME = 'salam!';
بعد از نسخه ی 3، PHP از سیستم hashtable برای ذخیره ثابت ها در رم استفاده میکنه. توی این سیستم برای هر ثابت (قبل از اینکه مقداری بهش نسبت داده بشه و به زبان ساده برای ساختن تنها آدرس هر ثابت) به ترتیب برای ثابت نوع اول (بالایی ها رو میگم!) 42 بایت و برای نوع دوم 26 بایت فضا هزینه میشه.

لب کلام: بهر حال بعضی مواقع ناچاریم تعداد زیادی ثابت داشته باشیم، در جاهایی که تعداد ثابت ها زیاده (مثلن در سیستم های چند زبانه که از ثابت ها برای translate استفاده می کنن)، بهتره از ثابت های نوع دوم استفاده کنید.

سوالتون که میگین "باعث کند شدن سیستم نمیشه؟"، خب جوابش واضح هست، ولی اینکه چقدر میشه، به امکانات محیط اجرا بستگی داره. مهم اینه که ما بتونیم بهترین روش ها رو پیاده کنیم.

موفق باشین
 

phpweb

Active Member
سلام

آخ جون! بحث های تخصصی!!

اگه رشته ی تحصیلیتون در زمینه کامپیوتر (اختصاصن سخت و نرم) نباشه، بعید میدونم دنبال کردن علیتی این گونه سوال ها براتون جذاب باشه (البته من خودم رشته ی تحصیلیم هیچ ارتباطی با کامپیوتر نداره:green: !)

شما برای رسیدن به پاسخ سوال هاتون، باید در مورد اینکه php ( و بطور خاص موتور زند) چطور memory رو مدیریت می کنه تحقیق کنید.(اگه بخوایم تاثیر امکانات سخت افزاری رو بر سرعت اجرای هر برنامه ای نادیده بگیریم)

راجع به ثابت ها سر بسته بهتون بگم:

ما دو نوع ثابت داریم، ثابت هایی که بصورت global قابل دسترس اند( define شدگان!:green:) نمونه:
PHP:
define('welcome', 'salam!');
و ثابت هایی که در کلاس ها تعریف می کنیم:
PHP:
const welcome = 'salam!';
بعد از نسخه ی 3، php از سیستم hashtable برای ذخیره ثابت ها در رم استفاده میکنه. توی این سیستم برای هر ثابت (قبل از اینکه مقداری بهش نسبت داده بشه و به زبان ساده برای ساختن تنها آدرس هر ثابت) به ترتیب برای ثابت نوع اول (بالایی ها رو میگم!) 42 بایت و برای نوع دوم 26 بایت فضا هزینه میشه.

لب کلام: بهر حال بعضی مواقع ناچاریم تعداد زیادی ثابت داشته باشیم، در جاهایی که تعداد ثابت ها زیاده (مثلن در سیستم های چند زبانه که از ثابت ها برای translate استفاده می کنن)، بهتره از ثابت های نوع دوم استفاده کنید.

سوالتون که میگین "باعث کند شدن سیستم نمیشه؟"، خب جوابش واضح هست، ولی اینکه چقدر میشه، به امکانات محیط اجرا بستگی داره. مهم اینه که ما بتونیم بهترین روش ها رو پیاده کنیم.

موفق باشین
جواب خوبی بود.

می شه بگید برای نگه داری یه متغیر چند بایت مورد استفاده قرار می گیره؟
 

Domanjiri

Well-Known Member
درود بر شما

این کد:
PHP:
echo memory_get_usage()
مقدار مموری مورد استفاده PHP در زمان اجرای کد بالا رو نشون میده. و این کد:
PHP:
echo memory_get_peak_usage();
پیک مموری اختصاص داده شده به PHP رو چاپ می کنه!

اعداد به بایت هستند.

موفق باشین
 

phpweb

Active Member
درود بر شما

این کد:
PHP:
echo memory_get_usage()
مقدار مموری مورد استفاده php در زمان اجرای کد بالا رو نشون میده. و این کد:
PHP:
echo memory_get_peak_usage();
پیک مموری اختصاص داده شده به php رو چاپ می کنه!

اعداد به بایت هستند.

موفق باشین
طرز کار این کدها چطوره؟ فرض کنید قبل از اجرای این تابع، متغیرها و ثابتهای زیادی رو ایجاد کردیم، این کد مجمومع فضای اشغال شده توسط همه این ثابتها و متغیرها رو نمایش می ده؟

اگه بخوایم بدونیم که ی متغیر یه یه تابع چقدر مموری حافظه اشغال کرده چطور باید منوجه شد؟
 

Domanjiri

Well-Known Member
درود بر شما

مثال:
PHP:
$i = memory_get_usage() ; // initial memory usage
echo $i."</br>";
$a = 12;
echo (memory_get_usage() -$i)."</br>"; //$a mem usage
unset($a); // free $a
$b = 'salam';
echo (memory_get_usage() -$i)."</br>"; //$b mem usage
unset($b);
function test($x){
return $x*$x;
}
$c = test(5);
echo (memory_get_usage() -$i)."</br>"; 

echo 'peak mem usage: '.memory_get_peak_usage();

موفق باشین
 

phpweb

Active Member
درود بر شما

مثال:
PHP:
$i = memory_get_usage() ; // initial memory usage
echo $i."</br>";
$a = 12;
echo (memory_get_usage() -$i)."</br>"; //$a mem usage
unset($a); // free $a
$b = 'salam';
echo (memory_get_usage() -$i)."</br>"; //$b mem usage
unset($b);
function test($x){
return $x*$x;
}
$c = test(5);
echo (memory_get_usage() -$i)."</br>"; 

echo 'peak mem usage: '.memory_get_peak_usage();
موفق باشین
آماری وجود نداره که بر اساس اون بتونیم میزان استاندارد مصرف حافظه در بازدیدهای مختلف رو بدونیم؟
 

Domanjiri

Well-Known Member
درود بر شما

مقدار حافظه اختصاص داده شده به متغیر به سیستم عاملی که برنامه داره روش اجرا میشه بستگی داره!

توی win32 اگه اشتباه نکنم اینا بودن (البته این مقادیر مربوط به ++c هست.PHP سیستم allocate کردنش کمی متفاوت ئه..و جدولی که آدرس متغیر ها رو نگهداری می کنه، مطمئنن توی PHP فضای بیشتری رو مصرف می کنه).

1byte ___________ char
4 byte ____________ int
1 byte ____________ bool
8 byte __________ double
.....
..
.

موفق باشین
 
آخرین ویرایش:

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

بالا