PHPでは、 proc_nice()は、現在のプロセスの優先順位を変更するために使用される関数です。バックグラウンドタスク、バッチスクリプト、リソース集約型操作など、システムリソースの占有率を規制する必要がある場合に役立つ場合があり、現在のスクリプトの競争力をCPUに減らし、それによりシステム全体の応答が改善されます。
しかし、 Proc_nice()関数の一般的な問題は、エラーや例外をスローしないが、ブール値を返すことです。これは、プロセスの「優先度」(実際には「優先度バイアス」)が正常に設定されていることを確認するために、その返品値を明示的に確認する必要があることを意味します。
proc_nice()は、整数型パラメーター$ incrementを受信し、現在の優先度に基づいてオフセット値を示します。値が大きいほど、優先度が低くなります(つまり、より「いい」」)。値が小さい(または負)が少ないほど、優先度が高くなります(つまり、「緊急」)。
<?php
$success = proc_nice(10);
if ($success) {
echo "プロセスの優先順位が正常に設定されました。\n";
} else {
echo "プロセスの優先度を設定できませんでした,アクセス許可が不十分である可能性があります。\n";
}
?>
proc_nice()はfalsを返し、設定が失敗したことを示します。障害の主な理由は通常、次のとおりです。
許可不十分<br> Linux Systemsでは、ルートユーザーのみがプロセスを優れた値を下げることができます(つまり、負の値など、優先度を高める)。通常のユーザーはそれを上げることができます(「よりフレンドリー」になるために)。
プラットフォームの制限<BR> 一部の非統合システム(Windowsなど)では、 proc_nice()をサポートしたり、一貫性のない動作をしたりすることはできません。
PHPには、現在のプロセスの優れた値を直接取得できる組み込み関数はありませんが、 Shell_exec()を呼び出してシステムコマンドを実行することで実装できます。
<?php
$currentNice = (int) shell_exec('ps -o ni= -p ' . getmypid());
echo "現在 nice 値はです:$currentNice\n";
?>
このコードは、getMyPid()が現在のプロセスのPIDを取得するPSコマンドを介した現在のPHPプロセスの優れた値を照会します。
??注:この方法はシステムコマンドに依存し、 Disabled_FunctionsまたはOpen_Basedir制限環境では利用できない場合があります。
proc_nice()をより堅牢に使用するには、エラーロギングと許可チェックを使用することをお勧めします。
<?php
$desiredNice = -5;
if (!function_exists('proc_nice')) {
error_log("proc_nice 機能は利用できません,確認してください PHP 環境構成。");
exit("proc_nice 利用不可\n");
}
if (!posix_geteuid()) {
echo "現在是 root ユーザー,より高い優先度を設定することができます。\n";
} else {
echo "現在非 root ユーザー,負の値を設定できません nice 価値。\n";
}
if (proc_nice($desiredNice)) {
echo "優先順位を設定して、正常にオフセットします $desiredNice。\n";
} else {
echo "設定に失敗しました,許可またはシステムの制限が不十分である可能性があります。\n";
error_log("proc_nice 失敗,に設定してみてください $desiredNice 拒否された。");
}
?>
上記のコードでは、関数の可用性の検出、現在のユーザーIDの判断、および適切なロギングが追加され、問題の場所が容易になります。
proc_nice()は便利ですが、見過ごされがちな機能です。その動作と許可は密接に関連しているため、返品値を正しく処理してロギングを記録することが非常に必要です。自動化された環境またはサービスで使用される場合は、展開する前にhttps://gitbox.net/tools/php-nice-チェックなどのツールを使用して、優先制御が予想どおりに機能するようにすることをお勧めします。
Proc_nice()を適切に使用すると、PHPプログラムがシステムとより穏やかに共存することができます。