Question

Je souhaite exécuter un travail cron qui effectue un nettoyage qui nécessite beaucoup de ressources processeur et Mysql. Je veux qu'il ne s'exécute que si le serveur n'est pas relativement occupé.

Quel est le moyen le plus simple de déterminer cela à partir de PHP? (Par exemple, une requête renvoie-t-elle le nombre de requêtes effectuées à la dernière minute? ...)

Était-ce utile?

La solution

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

Essayez de mettre à jour cette fonction selon vos besoins

Autres conseils

Sous Linux, vous pouvez charger le fichier / proc / loadavg .

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

S'il s'agit d'un système Unix, analysez la sortie de uptime . Cela montre la charge du processeur qui est généralement considérée comme une bonne mesure de "occupé". Tout ce qui se rapproche ou dépasse 1.0 signifie "complètement occupé".

Il existe trois processeurs "charge". fois dans cette sortie donnant la moyenne de charge sur 1, 5 et 15 minutes. Choisissez celui qui convient à votre script. Définition de " charge " est ici .

Vous pouvez probablement utiliser les informations dans les processus de liste Mysql pour voir combien sont actifs ou en veille, indicateur décent de la charge de la base de données.

Si vous êtes sous Linux, vous pouvez utiliser la fonction Sys GetLoadAvg pour afficher la charge globale du système. .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top