همیشه در مورد کند بودن سورس کد های مختلف بحث هایی بوده. بسیاری اقدام به تغییر زبان برنامه نویسی خود کرده اند ، اما بی فایده بوده
در این مقاله قصد داریم با هم بررسی کنیم که چطور میتونیم افزایش سرعت کد 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 شدید میتونید ازجدول زیر بین بد و بدتر انتخاب کنید
Index | Found at the end | Found in the middle | Summary | Found at the start | NOT FOUND | METHOD |
108 | >0 ms | >0 ms | >0 ms | >0 ms | >0 ms | str_replace |
636 | 1 ms | 1 ms | 2 ms | 1 ms | >0 ms | preg_replace PATTERN |
647 | 1 ms | 1 ms | 2 ms | 1 ms | >0 ms | preg_replace S\ |
100 | >0 ms | >0 ms | >0 ms | >0 ms | >0 ms | strtr |
چطور در متغیر ها جستجو کنم؟
همانطور که گفتیم ، دستورات 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 پیش میاد. طبق تجربه شخصی من ، موارد زیر میتونه بهتون کمک شایانی کنه.
- سعی کنید کد خود را به شکل وابسته به متغیر های مشخصی مرتب کنید و با استفاده از isset از اجرای کد های اضافه جلوگیری کنید
- اگر فایل اصلی کد تون خیلی سنگین هست ، بعد از اجرای بخش قبلی کد ها رو پارتیشن بندی کنید و با require_once به سورس اصلی ربط بدید
- از http request بیش از حد خودداری کنید. هنگام ارسال درخواست ، بسته به موقعیت سرور بین 0.1 تا 2 ثانیه معمولا زمان گیره. پس سعی کنید چندین پارامتر را در یک درخواست ارسال کنید و در سرور مبدا آن را تجزیه و تحلیل کنید
- تنظیمات سرور رو مناسب با سورس تون انجام بدید
- از ورژن جدید php استفاده کنید
اگر سوالی دارید حتما از طریق بخش نظارت مارو در جریان بزارید
میدونستی کانفیگ مناسب سرور میتونه تا چند برابر باعث افزایش سرعت کد php ات بشه؟
منابع و مراجع
- وبسایت بنچمارک php میتینگ
- تجربیات شخصی هیراد سجده
همچنین بخوانید

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