Dans PHP, Proc_Nice () est une fonction utilisée pour modifier la priorité actuelle du processus. Il peut être utile lorsqu'il est nécessaire de réguler la quantité d'occupation des ressources système, comme dans les tâches de fond, les scripts par lots ou les opérations à forte intensité de ressources, réduisant la compétitivité du script actuel au CPU, améliorant ainsi la réponse globale du système.
Mais un problème commun avec la fonction pro_nice () est qu'il ne lance pas d'erreur ou d'exception, mais renvoie une valeur booléenne. Cela signifie que vous devez vérifier explicitement sa valeur de retour pour confirmer que la "priorité" du processus (en fait "biais de priorité") a été définie avec succès.
proc_nice () reçoit un paramètre de type entier $ incrément , indiquant la valeur de décalage basée sur la priorité actuelle. Plus la valeur est grande, plus la priorité est faible (c'est-à-dire plus "belle"); Plus la valeur (ou même négative) est petite, plus la priorité est élevée (c'est-à-dire plus "urgente").
<?php
$success = proc_nice(10);
if ($success) {
echo "La priorité du processus a été définie avec succès。\n";
} else {
echo "Échec de définir la priorité du processus,Il se peut qu'il y ait des autorisations insuffisantes。\n";
}
?>
proc_nice () renvoie false pour indiquer l'échec du paramètre. Les principales raisons de l'échec sont généralement les suivantes:
Autorisations insuffisantes <br> Dans les systèmes Linux, seul l'utilisateur racine peut abaisser la bonne valeur de processus (c'est-à-dire augmenter la priorité, comme les valeurs négatives). Les utilisateurs ordinaires ne peuvent que le faire (pour devenir "plus amical").
Restrictions de plate-forme <br> Sur certains systèmes non UNIX (tels que Windows), Proc_nice () peut ne pas être pris en charge ou se comporter de manière incohérente.
PHP n'a pas de fonction intégrée qui peut obtenir directement la bonne valeur du processus actuel, mais il peut être implémenté en appelant shell_exec () pour exécuter les commandes système:
<?php
$currentNice = (int) shell_exec('ps -o ni= -p ' . getmypid());
echo "actuel nice La valeur est:$currentNice\n";
?>
Ce code interroge la bonne valeur du processus PHP actuel via la commande PS , où getMyPid () obtient le PID du processus actuel.
?? Remarque: Cette méthode dépend des commandes système et peut ne pas être disponible dans Disabled_Functions ou des environnements restreints Open_Basedir .
Pour une utilisation plus robuste de proc_nice () , il est recommandé d'utiliser la journalisation des erreurs et la vérification de l'autorisation:
<?php
$desiredNice = -5;
if (!function_exists('proc_nice')) {
error_log("proc_nice Fonction non disponible,Veuillez confirmer PHP Configuration de l'environnement。");
exit("proc_nice Pas disponible\n");
}
if (!posix_geteuid()) {
echo "actuel是 root utilisateur,Vous pouvez essayer de définir une priorité plus élevée。\n";
} else {
echo "actuel非 root utilisateur,Ne peut pas définir des valeurs négatives nice valeur。\n";
}
if (proc_nice($desiredNice)) {
echo "Définir la priorité pour compenser avec succès $desiredNice。\n";
} else {
echo "Échec du réglage,Il se peut qu'il n'y ait des autorisations insuffisantes ou des restrictions système。\n";
error_log("proc_nice échouer,Essayez de régler $desiredNice Rejeté。");
}
?>
Dans le code ci-dessus, la détection de la disponibilité des fonctions, le jugement de l'identité de l'utilisateur actuel et la journalisation appropriée sont ajoutés pour faciliter l'emplacement du problème.
proc_nice () est une fonction utile mais facilement négligée. Étant donné que son comportement et ses autorisations sont étroitement liés, il est très nécessaire de gérer correctement la valeur de retour et d'enregistrer la journalisation. S'il est utilisé dans un environnement ou un service automatisé, il est recommandé d'utiliser des outils tels que https://gitbox.net/tools/php-nice-check avant le déploiement pour garantir que le contrôle de priorité fonctionne comme prévu.
Une utilisation appropriée de pro_nice () peut faire en sorte que votre programme PHP coexiste avec le système plus doucement.