كيف يمكن لبرنامج PHP النصي معرفة ما إذا كان الخادم مشغولاً؟

StackOverflow https://stackoverflow.com/questions/632245

  •  08-07-2019
  •  | 
  •  

سؤال

أرغب في تشغيل مهمة cron التي تقوم بعملية التنظيف التي تتطلب الكثير من موارد وحدة المعالجة المركزية وMysql.أريد تشغيله فقط إذا لم يكن الخادم مشغولاً نسبيًا.

ما هي أبسط طريقة لتحديد ذلك من PHP؟(على سبيل المثال، هل يوجد استعلام يُرجع عدد الاستعلامات التي تم إجراؤها في اللحظة الأخيرة؟...)

هل كانت مفيدة؟

المحلول

if (function_exists('sys_getloadavg')) {
    $load = sys_getloadavg();
    if ($load[0] > 80) {
       header('HTTP/1.1 503 Too busy, try again later');
       die('Server too busy. Please try again later.');
    }
}

وحاول لتحديث هذه الوظيفة لاحتياجاتك

نصائح أخرى

في لينكس يمكنك الحصول على تحميل من ملف /proc/loadavg.

$load = split(' ',file_get_contents('/proc/loadavg'))
$loadAvg = $load[0]

إذا كان هذا نظام Unix، فقم بتحليل مخرجات uptime.يوضح هذا حمل وحدة المعالجة المركزية التي تعتبر عمومًا مقياسًا جيدًا لـ "مشغول". أي شيء قريب أو أكثر 1.0 تعني "مشغول تمامًا".

توجد ثلاث مرات "تحميل" لوحدة المعالجة المركزية في هذا الإخراج مما يوفر متوسط ​​تحميل يزيد عن 1 و5 و15 دقيقة.اختر ما هو منطقي بالنسبة للبرنامج النصي الخاص بك.تعريف "الحمل" هنا.

وربما يمكنك استخدام المعلومات في ماي العمليات تعمل لمعرفة عدد تنشط مقابل النوم، وهو مؤشر لائق عن الحمل على DB.

إذا كنت على لينكس يمكنك استخدام الدالة تميز الكلية GetLoadAvg لرؤية العبء على النظام العام .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top