loader-logo

افزایش سرعت چند برابری کد های php با چند دستور ساده

همیشه در مورد کند بودن سورس کد های مختلف بحث هایی بوده. بسیاری اقدام به تغییر زبان برنامه نویسی خود کرده اند ، اما بی فایده بوده

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

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

در این مقاله ، قصد بررسی استاندارد های کد نویسی php رو داریم.

switch یا if / else if

همیشه هنگامی که تعداد شرط های برنامه زیاد میشه ، سوالی پیش میاد که بهتره برای شرط از if یا switch استفاده کنم؟

چه زمان باید switch case بزنم؟

هنگامی که شرط های شما اندک است ، سوییچ کیس عملکرد بسیار سریعتری رو داره ، اما مشکل این دستور این هست که بر خلاف if / else تمام کیس ها رو با هم میخوانه. و باعث میشه وقتی case های شما زیاد هست switch کند بشه. یکی از راه حل هایی که 25 درصد به سرعت سورس در این مواقع بهبود میده ، استفاده از تابع die یا exit قبل از break است، البته اگر کار سورس کد php شما بعد case تموم میشه

برای این موضوع توصیه میشه از switch case برای شرط هایی با تعداد کمتر استفاده کنید ، البته اگر کد شما شامل یک if و یک else نمیشه. اگر اینطوره ، بهینه ترین روش رو در بخش های پایینی تر مقاله پیدا کنید

چه زمان باید از if / else استفاده کنم؟

هنگامی که تعداد شرط های (متوالی) شما زیاد است ، یعنی از بین 200 شرط یکی درست است برای مثال ، if / else if برای کد شما مناسب تره. البته اگر به هر حال 200 شرط باید اجرا بشه ، توصیه میشه از switch استفاده کنید. البته هیچوقت نباید یک if و else رو پشت سر هم دیگه بنویسید.

چه زمان باید از Ternary Operators (?:) استفاده کنم؟

هنگامی که یک if و else پشت سر هم در سورس کد شما به وجود میاد ، باید از علامت های شرطی استفاده کنید. این علامت ها 2 برابر سرعت اجرا شدن شرط شما را افزایش میدن

(اگر غلط بود) : (اگر درست بود) ? (شرط);
(if) ? (true) : (false);

برای مثال میخواهیم بگوییم اگر a برابر 2 بود اون رو به اضافه یک کن. اگر نه منهای یک کن

(a==2)?(a++):(a--);

حتما از این اپراتور ها برای افزایش سرعت کد php تون استفاده کنید. اکثرا این مورد رو رعایت نمیکنن

اگر متغیر خالی بود

اگر متغیر شما آرایه باشد ، بهتره با تابع isset نال نبودن محتوا اون رو بررسی کنید. در غیر این صورت ، اگر متغیر آرایه نیست ، بهترین کار بررسی با تابع empty هست.

یعنی استفاده از == و === ممنوع ! حالا اگر مجبور به استفاده از این دو هستید ، == پرفورمنس بالاتری رو بهتون میده. البته کاربرد این دو عملگر متفاوت است

برای مثال کد های زیر رو ببینید

$a = [1,2,3];
if(isset($a)){
    echo 'a isn't null';
}
$a = 1;
if(empty($a)){
     echo 'a isn't set';
}

دقت کنید دو تابع empty و isset متضاد یکدیگر هستن.

برای replace کردن مقادیر چه کنم

قبل از هرچیزی ، تمام تلاش تون رو بکنید برای جایگذین کردن مقادیر مجبور به استفاده از REGEX و الگو ها نشید. چون سری دستورات preg از کند ترین های php هستن

چه زمان از strtr استفاده کنم؟

یکی از توابع خیلی قدیمی و کاربردی php هست. زمانی که میخواهید یک مقدار چندین مقدار مشخص را با یکدیگر جایگذین کنید بالاترین پرفورمنس رو داره. به کد زیر توجه کنید.

strtr($a,['find' => 'replace']

الان این کد در متغیر a جای find میاد replace میزاره

بازم اگر مجبور به استفاده از سری دستورات preg شدید میتونید ازجدول زیر بین بد و بدتر انتخاب کنید

IndexFound at the endFound in the middleSummaryFound at the startNOT FOUNDMETHOD
108>0 ms>0 ms>0 ms>0 ms>0 msstr_replace
6361 ms1 ms2 ms1 ms>0 mspreg_replace PATTERN
6471 ms1 ms2 ms1 ms>0 mspreg_replace
S\
100>0 ms>0 ms>0 ms>0 ms>0 msstrtr
بررسی دستورات جایگذینی محتوا

چطور در متغیر ها جستجو کنم؟

همانطور که گفتیم ، دستورات preg کند هستن ، پس سعی کنید بیشر از strstr و strpos استفاده کنید

هنگامی که به متن خروجی نیاز دارید ، برای مثال برنامه شما از nosql استفاده میکند و میخواهید آن را ذخیره کنید و به کاربران نشان دهید ، بهتر است از strstr استفاده کنید چون میتونید از نوع string خروحی بگیرید

به مثال زیر دقت کنید

$a = "writed by itlog.ir";
if(strstr($a,"writed")!=""){echo true};

اما اگر نیاز به خروجی ندارید ، strpos به شما سرعت بیشتری میده. کد زیر رو ببینید

$a = "hirad sajde is itlog.ir creator";
if(strpos($a,"hirad sajde") !== null){echo true}

حجم کد هایم در یک فایل زیاده. چه کنم؟

این مشکل اغلب در ربات های تلگرامی و restful api های بر مبنای curl پیش میاد. طبق تجربه شخصی من ، موارد زیر میتونه بهتون کمک شایانی کنه.

  1. سعی کنید کد خود را به شکل وابسته به متغیر های مشخصی مرتب کنید و با استفاده از isset از اجرای کد های اضافه جلوگیری کنید
  2. اگر فایل اصلی کد تون خیلی سنگین هست ، بعد از اجرای بخش قبلی کد ها رو پارتیشن بندی کنید و با require_once به سورس اصلی ربط بدید
  3. از http request بیش از حد خودداری کنید. هنگام ارسال درخواست ، بسته به موقعیت سرور بین 0.1 تا 2 ثانیه معمولا زمان گیره. پس سعی کنید چندین پارامتر را در یک درخواست ارسال کنید و در سرور مبدا آن را تجزیه و تحلیل کنید
  4. تنظیمات سرور رو مناسب با سورس تون انجام بدید
  5. از ورژن جدید php استفاده کنید

اگر سوالی دارید حتما از طریق بخش نظارت مارو در جریان بزارید

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

منابع و مراجع

همچنین بخوانید

برچسب ها:

2 افکار در “افزایش سرعت چند برابری کد های php با چند دستور ساده”

  1. حمید گفت:

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

    1. hiradsajde گفت:

      نظر لطفتونه😁🙏

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *