Frage

Ich möchte einen Cron-Job ausführen, die Bereinigung tut, die eine Menge von CPU und Mysql Ressourcen nimmt. Ich will es nur laufen, wenn der Server nicht relativ beschäftigt ist.

Was ist die einfachste Art und Weise, dass von PHP zu bestimmen? (Zum Beispiel gibt es eine Abfrage, die zurückgibt, wie viele Anfragen in letzter Minute fertig waren? ...)

War es hilfreich?

Lösung

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.');
    }
}

Versuchen Sie diese Funktion, um Ihre Bedürfnisse zu aktualisieren

Andere Tipps

Unter Linux können Sie laden aus /proc/loadavg Datei.

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

Wenn dies ein Unix-System ist, analysiert die Ausgabe von uptime. Dies zeigt die CPU-Last, die allgemein als ein gutes Maß für seine „beschäftigt.“ Alles, was in der Nähe von oder über 1.0 bedeutet „vollständig besetzt.“

Es gibt drei CPU "load" mal in dieser Ausgabe der durchschnittliche Belastung über 1 geben, 5 und 15 Minuten. Wählen Sie je nachdem, was sinnvoll für Ihren Skript macht. Definition von "load" ist hier .

Sie können sich wahrscheinlich die Informationen in den Mysql Liste Prozesse funktionieren, um zu sehen, wie viele aktiv sind gegen schlafen, ein anständiger Indikator über die Belastung der DB.

Wenn Sie auf Linux sind, können Sie die Sys GetLoadAvg Funktion, um die Gesamtbelastung des Systems zu sehen .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top