یوشا آل ایوب

وبگاه دست نوشته ها و تجربیات شخصی
بِسمِ اللّه‏ِ الرَّحمنِ الرَّحيمِ

یوشا آل ایوب

وبگاه دست نوشته ها و تجربیات شخصی

یوشا آل ایوب

دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم: آنکس که تخصص ندارد و کاری را می پذیرد، بی تقواست!

تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران

۱۳ مطلب با کلمه‌ی کلیدی «پی اچ پی» ثبت شده است

 

ظاهراً در PHP (در ویندوز) هرچیزی بعد از دستور exit بصورت ناقص(!) پردازش میشه ولی بصورت کامل حافظه مورد نیازش رو allocate میکنه...

 

خروجی یک صفحه ساده:

<?php

echo memory_get_usage();

// 217992

 

خروجی یک صفحه متغیر دار ولی exit شده:

<?php

echo memory_get_usage();

// 220552

exit; // <---------- !!

$simpleVar = 'abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabbcdabc​dabcdabcdabcdabcdabcd';
$simpleVar .= '​abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabbcdabc​dabcdabcdabcdabcdabcd';
$simpleVar .= '​abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabbcdabc​dabcdabcdabcdabcdabcd';
$simpleVar .= '​abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabbcdabc​dabcdabcdabcdabcdabcd';
$simpleVar .= '​abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabbcdabc​dabcdabcdabcdabcdabcd';
echo $simpleVar; 

enlightened

۲ نظر ۹۶/۰۳/۱۵
یوشا آل ایوب

 

سرعت بیشتر get_magic_quotes_runtime و get_magic_quotes_gpc برای گرفتن مقدار Magic quotes:

if (get_magic_quotes_gpc() || get_magic_quotes_runtime())
{
    #...
}

0.0123500823970
0.0124192237854
0.0124502182007
0.0128602981567
0.0129485130310
0.0129580497742
0.0129580497742
0.0129890441895
0.0129985809326
0.0130105018616
0.0130105018616
0.0130200386047
0.0130295753479
0.0130391120911
0.0141811370850

سرعت کمتر ini_get برای گرفتن مقدار Magic quotes:

if (ini_get('magic_quotes_gpc') || ini_get('magic_quotes_runtime'))
{
    #...
}

0.0201392173767
0.0201511383057
0.0201606750488
0.0201988220215
0.0202012062073
0.0202107429504
0.0202202796936
0.0202417373657
0.0202584266663
0.0203299522400
0.0219893455505
0.0220894813538
0.0238800048828
0.0250506401062
0.0255298614502
۰ نظر ۹۳/۰۸/۰۸
یوشا آل ایوب

مقایسه سرعت بین دستورات شرطی If Else و Ternary(سه تایی)...

سرعت بیشتر:

if x: ...
else: ...
endif;

0.0336170196533
0.0337123870850
0.0337123870850
0.0338077545166
0.0338077545166
0.0339031219482
0.0339031219482
0.0339984893799
0.0339984893799
0.0339984893799
0.0343084335327
0.0343084335327
0.0344038009644
0.0346183776855
0.0608921051025

سرعت کمتر:

x ? ... : ...;

0.0385999679565
0.0389099121094
0.0390052795410
0.0390052795410
0.0392198562622
0.0392198562622
0.0392913818359
0.0393867492676
0.0394105911255
0.0395059585571
0.0395059585571
0.0395059585571
0.0396013259888
0.0405073165894
0.0436067581177
۱ نظر ۹۳/۰۵/۰۳
یوشا آل ایوب

مقایسه سرعت ثابت PHP_EOL در مقابل سرعت "\n"

 

سرعت کمتر:

$variable = 'abcdef' . PHP_EOL;

0.000889062881470
0.000889062881470
0.000889062881470
0.000890016555786
0.000890970230103
0.000891208648682
0.000892162322998
0.000894069671631
0.000952959060669
0.001131057739260

سرعت بیشتر:

$variable = 'abcdef' . "\n";

0.000457048416138
0.000459194183350
0.000470161437988
0.000473976135254
0.000476121902466
0.000491142272949
0.000508069992065
0.000571012496948
0.000572204589844
0.000643014907837

 

نکته: البته ثابت PHP_EOL در PHP 5.0.2 به بعد تعبیه شده، و در هر سیستم عاملی به مقدار متفاوتی اشاره می کنه.

https://github.com/php/php-src/blob/master/main/php.h#L48

#ifdef PHP_WIN32
#    include "tsrm_win32.h"
#    include "win95nt.h"
#    ifdef PHP_EXPORTS
#        define PHPAPI __declspec(dllexport)
#    else
#        define PHPAPI __declspec(dllimport)
#    endif
#    define PHP_DIR_SEPARATOR '\\'
#    define PHP_EOL "\r\n"
#else
#    if defined(__GNUC__) && __GNUC__ >= 4
#        define PHPAPI __attribute__ ((visibility("default")))
#    else
#        define PHPAPI
#    endif
#    define THREAD_LS
#    define PHP_DIR_SEPARATOR '/'
#    define PHP_EOL "\n"
#endif
۰ نظر ۹۳/۰۱/۰۷
یوشا آل ایوب

/**
 * A hack to support __construct() on PHP 4
 * Hint: descendant classes have no PHP4 class_name() constructors,
 * so this constructor gets called first and calls the top-layer __construct()
 * which (if present) should call parent::__construct()
 *
 * @return Object
 */
function Object()
{
    $arguments = func_get_args();

    if (method_exists($this, '__destruct')) register_shutdown_function(array(&$this, '__destruct'));

    call_user_func_array(array(&$this, '__construct'), $arguments);
    return;
}

https://github.com/felixge/raleigh-workshop-08/blob/master/application/cake/libs/object.php

۱ نظر ۹۲/۰۵/۰۲
یوشا آل ایوب

 

مقایسه سرعت بین توابع is_array/is_string/is_integer... در مقابل تابع GetType

سرعت بیشتر:

$variable = array(1, 2, 3, 4, 5);

if(is_array($variable))
{
    # ...
}

0.00079393386840820
0.00079488754272461
0.00080204010009766
0.00080204010009766
0.00080204010009766
0.00080204010009766
0.00081205368041992
0.00093293190002441
0.00111198425292970
0.00123190879821780

سرعت کمتر:

$variable = array(1, 2, 3, 4, 5);

if(gettype($variable) == 'array')
{
    # ...
}

0.0013110637664795
0.0013110637664795
0.0013139247894287
0.0013139247894287
0.0013179779052734
0.0013198852539062
0.0013239383697510
0.0013329982757568
0.0014750957489014
0.0018458366394043
۰ نظر ۹۲/۰۴/۱۱
یوشا آل ایوب

 

# 1
defined(define('AAA', !define('BBB', define('CCC', !!!!!!!!!!!!NULL . !define('DDD', define('EEE', !!!!!!!!!!!!NULL . !define('FFF', define('GGG', !define('HHH', define('III', !define('JJJ', define('KKK', !define('LLL', define('MMM', !define('NNN', !print(5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- 2))))))))))))))));

# 2
echo ('First define: ' . (int)AAA); # ?!
echo '<br/>';
echo ('Last define: ' . (int)NNN . !!!!!!NULL); # ?!

# 3
echo '<br/>';
echo ('Last define: ' . print !!!!!NULL . !print NULL . print !!!!!NULL . !print print 'DAMNED BACK-OFF -----> '); # ECHO?!

# 4
echo '<br/>';
print_r (array(array( print !print !print !print !print define(54321 . NULL, 'WOW!')))); # DEFINE 54321!
echo '<br/>';

# 5
echo (int)defined(54321); # IS DEFINED!

# 6
echo '<br/>';
echo (exit(is_null(!defined(!print('Test!' . !!!!!NULL . NULL . !!!!!NULL . NULL . NULL))))); # ?!
۰ نظر ۹۲/۰۱/۰۷
یوشا آل ایوب

 

1- هرگز فایل های ضمیمه شده رو با پسوند inc. ذخیره نکنید. یعنی name.class.inc رو به name.class.php تغییر بدید. و یا از .HTAccess یا HT برای تعیین سطح دسترسی inc. استفاده کنید.

با اینکار از دسترسی مستقیم و خوندن محتوای فایل توسط URL/Address bar جلوگیری می کنید.

 

2- حتاًالمکان تگ های اضافی و فضاهای خالی رو حذف و از باز و بسته کردن بیش از حد تگهای <?php ?> سرور خودداری کنید. (مخصوصاً در پروژه های سنگین)

اینکار به مقدار قابل توجهی در سرعت پردازش سورس PHP تون تاثیر میزاره.

 

3-  کلاس را با متد __construct یا نام کلاس شروع کنید و با متد __destruct پایان بدید. همچنین تمامی فیلدهای داخل کلاس رو در درون متد __destrunt با دستور unset نابود کنید. اگر هم از ارث بری کلاس استفاده نمی کنید، کلاس و متدها رو با کلمه کلیدی final آغاز کنید.

۱ نظر ۹۲/۰۱/۰۵
یوشا آل ایوب

 

سرعت بیشتر با تابع StrToLower:

0.000250101089478
0.000252008438110
0.000259160995483
0.000259160995483
0.000261068344116
0.000263929367065
0.000263929367065
0.000265121459961
0.000269174575806
0.000270128250122

سرعت کمتر با StrIStr:

0.000537157058716
0.000538110733032
0.000538110733032
0.000538110733032
0.000540018081665
0.000542163848877
0.000542163848877
0.000543117523193
0.000550985336304
0.000910043716431

در مواردی مثل:

if(strtolower(&$_SERVER['HTTPS']) == 'on' || @$_SERVER['HTTPS'] == 1 || @$_SERVER['SERVER_PORT'] == 443): return(true);
endif;
و
if(stristr(&$_SERVER['HTTPS']) == 'on' || @$_SERVER['HTTPS'] == 1 || @$_SERVER['SERVER_PORT'] == 443): return(true);
endif;
۰ نظر ۹۱/۱۲/۰۵
یوشا آل ایوب

مقایسه سرعت بین متغیر عدد و متغیر رشته عدد...
برای عده ای که اعداد رو هم داخل ' یا " قرار میدن! lol

صحیح:
سرعت بیشتر در استفاده و تعریف متغیر عدد:

$int_Test = 1234567890;
$dbl_Test = 123.45;

0.000204086303711
0.000205993652344
0.000207185745239
0.000207185745239
0.000208139419556
0.000208139419556
0.000210046768188
0.000285148620605
0.000363111495972
0.000482082366943

غلط:
سرعت کمتر در استفاده و تعریف متغیر رشته عدد:

$str_Integer = '1234567890';
$str_Double = "123.45";

0.000639200210571
0.000640153884888
0.000641107559204
0.000646114349365
0.000653028488159
0.000655174255371
0.000657081604004
0.000658988952637
0.000684976577759
0.000693798065186
۰ نظر ۹۱/۱۱/۱۹
یوشا آل ایوب