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

  • اگر یک صفحه می تواند به صورت استاتیک اجرا شود سعی نکنید به روش دیگر آنرا نمایش دهید چون سبب کاهش سرعت اجرای آن می شود.
  • تا حد امکان از دستور echo استفاده کنید چون این دستور سریعتر از print است.
  • برای نمایش عبارت ها بهتر است چند بار از دستور echo استفاده کنید تا پارامتر ها را در کنار یکدیگر نمایش دهید چون استفاده از عملگر الحاقی ” . ” کد ها را کوتاه تر می کند اما سرعت اجرای اسکریپت افزایش می یابد.
  • مقدار ماکزیمم را برای یک حلقه (لوپ) قبل از شروع حلقه قرار دهید و نه در داخل حلقه.
  • متغییر ها را بازنشانی کنید تا حافظه را برای اجرای اسکریپت خالی کنید به خصوص برای متغییر های ماتریسی یا arrays.
  • تا حد امکان از جادوگری پرهیز نمایید! با دستوراتی مانند:

    __get, __set, __autoload

  • استفاده از دستور require_conce معمولاً گران تمام می شود!
  • سعی کنید برای دستور های require , include از لینک کامل استفاده کنید چون اجرای این دستورها زمان کمتری می گیرد.
  • اگر می خواهید بدانید چه موقع اسکریپت شما شروع به اجرا می کند بهتر است از این دستور استفاده کنید:

INSERT:CONTENT:END SERVER[‘REQUEST_TIME’]

تا اینکه ازدستور

Time()

  • دستور str_replace سریعتر از preg_replace است اما strtr باز هم از str_replace سریعتر است.
  • بهتر است از select  استفاده کنید تا چند if , else if استفاده کنید.
  • ممانعت از خطا با @ بسیار کند است.
  • mod_deflate را در آپاچی غیر فعال کنید.
  • وقتی که کار با بانک اطلاعاتی تمام شد با استفاده از دستور close این ارتباط را ببندید.

دستور

$row[‘id’]

7  بار سریعتر از دستور

$row[id]

است

  • پیغام های خطا بار سرور شما را افزایش می دهند.
  • توابع را در داخل حلقه های for استفاده نکنید مثلاً

for ($x=0; $x< count (array); $x)

تابع count هر بار که حلقه اجرا می شود لود می شود.

  • افزایش تدریجی یا incrementing یک متغییر لوکال در متد ها از همه روش ها سریعتر است.
  • افزایش تدریجی یک متغییر گلوبال 2 بار کندتر از انجام این کار توسط یک متغییر لوکال است.
  • افزایش تدریجی یک متغییر تعریف نشده 9 تا 10 برابر کندتر از یک متغییر از پیش تعریف شده است.
  • احضار متد ها ظاهرا مستقل از تعداد آنهاست و سبب کند شدن آنها نمی شود.
  • یک فانکشن کال یا لود کردن یک تابع با پارامتر و یک تابع خالی به اندازه 7 الی 8 عملگر

$localvar++

زمان بر است.

  • قرار دادن رشته ها در داخل ‘ به جای ” کمی سرعت را بالا می برد چون در حالت عادی php داخل ” ” به دنبال متغییر می گردد. البته زمانی که متغییر استفاده می کنید می توانید از آن استفاده کنید.

  • وقتی که رشته ها را با دستور echo خروجی می دهید جدا کردن آنها با ویرگول سریعتر از جدا کردن با نقطه است. توجه داشته باشید که این کار فقط با دستور echo  انجام پذیر است.

  • یک اسکریپت php در سرور آپاچی دو تا 10 برابر کندتر از کد های استاتیک html است سعی کنید بیشتر از صفحات استاتیک استفاده کنید تا اسکریپت های دینامیک

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

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

  • نیازی نیست هر ساختار اطلاعاتی را به صورت یک کلاس تعریف کنید استفاده از array بهتر است.

  • شما می توانید کد های یک متد را هر جا لازم است تکه کنید

خروجی سایت