مطالعه این مقاله ارزشمند 1 دقیقه و 32 ثانیه زمان نیاز دارد مطالعه کنید، مشارکت کنید و به اشتراک بگذارید


عنوان مقاله: واکشی از دیتابیس رو برای تایم های طولانی متوقف کنیم

یکی از مهمترین و بزرگترین معضلات ما برنامه نویسها این هستش که نمیدونیم چطور منابعی که صرف کار خاصی میکنیم رو از بین ببریم مدیریت کنیم و یا آزاد کنیم. مخصوصا تو هزینه برترین وب اپلیکیشنها که mysql هستش و هزینه زیادی رو روی دست ما میزاره و دایما باید رم اضافه کنیم به سرور. در صورتی که یه کم با فرآیند آزاد سازی منابع آشنا باشیم این مشکلات کمتر میشه. ما روی لوکال همه کار میکنیم و انتظار داریم همون هم روی سرور انجام بشه بدون  هیچ مشکل در صورتی که اصلا هم اینطوری نیست و تجربه زیادی میخاد تا با این فرآیند ها آشنا بشید و مدیریت کنید ولی ساده ترین اون مدیریت داخل هاست نه سرور.

بزارید یه مثال ساده بزنم براتون ببینید چطوری میتونیم منابعی که برای کوئری گرفتن سنگین از دیتابیس رو انجام میدیم آزاد کنیم کوئری سنگینی مثل:

$q = $dbh->query("SHOW FULL PROCESSLIST");
$results = $q->fetchAll();
$error = $q->errorInfo();
if ($error[1]) print_r($error);

اگه همینطوری این کد رو ول کنیم خدا میدونه چقدر طول میکشه که تموم بشه. سرور رم کم بیاره هم اصلا بعید نیست. بهتره به جای این کد بگیم تو هر ۳۰ ثانیه اگه نتونست کوئری رو اجرا کنه kill بشه حداقل سرور نمیخابه رم کم نمیاد و تو بازدید کاربرا سایت به راحتی بالا میاد

$killedList = '';
foreach($results as $row => $field) {
  //make sure we only kill queries
  if ($field['Command'] != 'Query') continue;
  //if the Time exceeds 30 seconds, kill it
  if ($field['Time'] > 30) {
    $q = $dbh->query("KILL ".$field['Id']);
    $error = $q->errorInfo();
    if ($error[1]) print_r($error);
    $killedList .= '<strong>Query Killed:</strong> '.$field['Id'].'<br>';
  }
}
if ($killedList) print $killedList;

همینطوری که میبینید تو هر ۳۰ ثانیه اگه کوئری اجرا نشه باعث میشه kill بشه

بیوگرافی
مهندس مهدی پیشگوی

مهدی پیشگوی هستم متخصص تولید اپلکیشنهای موبایلی اندروید و سامانه های تحت وب. مسلط به اکثرا ابزارهای تولید وب از قبیل Php - NodeJs - React - VueJs و تولید اپلیکشنهای اندرویدی با Java و ReactNative. تو این سایت تمام تجربه ۱۵ سال من در اختیار شما قرار داده شده است

شما اولین فردی باشید که نظر ارزشمندی ارسال میکند

برای نظرات شما احترام قائل هستیم و بر حسب مشارکت مفید و سازنده شما کدهای تخفیف منحصر به فردی جهت خرید محصولات سایت ارسال خواهد شد



لطفا برای ارسال نظر وارد سایت شوید یا ثبت نام کنید. کلیک کنید

خواندن مطالب با ارزش زیر برای شما توصیه می شود

  • خطای composer و عدم ساپورت نسخه php
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 8 ثانیه
    مقالات آموزشی laravel - تیر 17، 1397

    چند روز پیش مشکلی که برام پیش اومد این بود که وقتی داشتم سایتم رو بالا می اوردم دیگه پوشه vendor که مربوط به لاراول بود رو آپلود نکردم. بعدش وقتی با دستور composer سعی کردم نصب و آپدیت کنم خطا داد. ...

  • مایگریشن ها رو تو لاراول به دلخواه به عقب برگردونیم
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 3 ثانیه
    مقالات آموزشی laravel - تیر 20، 1397

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

  • در php کودوم خط از کدی که نوشتیم باعث بروز خطا میشه
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 14 ثانیه
    مقالات آموزشی laravel - مرداد 23، 1397

    زمانی که در حال توسه نرم افزار هستیم بارها پیش اومده که خطاهایی دریافت میکنیم که به نظر آشکار میان ولی وقتی میخایید بفهمید که کودوم خط این اتفاق افتاده و اون رو دیباگ کنید به مشکل میخورید مخصوصا زم ...

  • پورت استفاده شده توسط لاراول رو kill کنیم
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 4 ثانیه
    مقالات آموزشی laravel - مرداد 23، 1397

    یکی از مهمترین مشکلاتی که من برای توسعه سیستم دیجیتال مارکتینک اینستاگرام داشتم این بود که رکوئستی که میفرستادم سمت اینستاگرام برای لایک زدن و فالو کردن و یا ارسال کامنت خیلی طولانی میشه و دیگه لوک ...

  • خطای composer و عدم ساپورت نسخه php
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 8 ثانیه
    مقالات آموزشی laravel - تیر 17، 1397

    چند روز پیش مشکلی که برام پیش اومد این بود که وقتی داشتم سایتم رو بالا می اوردم دیگه پوشه vendor که مربوط به لاراول بود رو آپلود نکردم. بعدش وقتی با دستور composer سعی کردم نصب و آپدیت کنم خطا داد. ...

  • پورت استفاده شده توسط لاراول رو kill کنیم
    مدت زمان مورد نیاز برای مطالعه: 1 دقیقه و 4 ثانیه
    مقالات آموزشی laravel - مرداد 23، 1397

    یکی از مهمترین مشکلاتی که من برای توسعه سیستم دیجیتال مارکتینک اینستاگرام داشتم این بود که رکوئستی که میفرستادم سمت اینستاگرام برای لایک زدن و فالو کردن و یا ارسال کامنت خیلی طولانی میشه و دیگه لوک ...