현재 위치: > 최신 기사 목록> PHP에서 Proc_nice를 사용하여 프로세스의 CPU 타임 슬라이스 우선 순위를 설정하는 방법은 무엇입니까?

PHP에서 Proc_nice를 사용하여 프로세스의 CPU 타임 슬라이스 우선 순위를 설정하는 방법은 무엇입니까?

gitbox 2025-05-29

Proc_nice () 란 무엇입니까?

Proc_nice () 는 PHP가 제공하는 시스템 통화 인터페이스로 현재 프로세스의 "좋은 값"을 변경하는 데 사용됩니다. 소위 "Nice Value"는 UNIX와 같은 시스템에서 프로세스 우선 순위를 측정하기위한 지표입니다. 값이 작을수록 우선 순위가 높아집니다. 값이 클수록 우선 순위가 낮습니다. 범위는 일반적으로 -20에서 19이며 기본값은 0입니다.

 <?php
$originalNice = proc_nice(0); // 전류를 쿼리하십시오 nice 값
echo "현재 프로세스 nice 값为: $originalNice\n";

// 우선 순위를 향상시킵니다(줄이다 nice 값)
if (proc_nice(-10)) {
    echo "프로세스 우선 순위를 성공적으로 업그레이드했습니다。\n";
} else {
    echo "프로세스 우선 순위를 향상시키지 못했습니다(필요할 수 있습니다 root 권한)。\n";
}
?>

주목해야 할 것

  1. 허가 한계 : 좋은 가치를 줄이기 (우선 순위 상승)는 일반적으로 루트와 같은 더 높은 권한이 필요합니다. 일반 사용자는 기본적으로 좋은 값을 증가시킬 수 있습니다 (즉, 우선 순위를 줄임).

  2. 임시 효과 : proc_nice ()를 사용하면 현재 스크립트 프로세스에만 영향을 미치며 시스템 설정을 영구적으로 변경하지 않습니다.

  3. 크로스 플랫폼 차이 : Windows 시스템은 Proc_nice ()를 지원하지 않으며이 플랫폼의 호출이 실패합니다.

일반적인 사용 시나리오

이미지 압축 배치 처리 도구를 작성하고 사용자가 한 번에 수백 개의 이미지를 업로드한다고 가정하면 처리 프로세스가 매우 시간이 많이 걸릴 수 있습니다. Proc_nice ()를 사용하여 스크립트의 실행 우선 순위를 높이고 가능한 한 많은 CPU를 사용할 수 있고 총 처리 시간을 줄일 수 있습니다.

 <?php
proc_nice(-5); // 프로세스 우선 순위를 약간 늘리십시오

$images = glob('/path/to/uploads/*.jpg');

foreach ($images as $image) {
    $compressed = compressImage($image);
    file_put_contents('/path/to/compressed/' . basename($image), $compressed);
}

function compressImage($file) {
    // 샘플 압축 로직(의사 코드)
    $img = imagecreatefromjpeg($file);
    ob_start();
    imagejpeg($img, null, 60);
    $data = ob_get_clean();
    imagedestroy($img);
    return $data;
}
?>

작업 대기열 (예 : Redis 기반 메시지 큐와 같은)과 호환되는 경우 스크립트 처리에 대한 우선 순위가 높아서 작업을 CPU에 우선 순위를 정할 수도 있습니다.

CLI 모드에서 더 효과적입니다

대부분의 웹 서버에는 PHP (예 : 30 초)에 실행 시간 제한이 있고 운영 환경이 비교적 제한되어 있으므로 CLI (Command Line) 모드에서 Proc_Nice ()를 사용하는 것이 좋습니다.

 php /var/www/gitbox.net/scripts/image_compress.php

이를 통해 좋은 값을 자유롭게 조정할 수있을뿐만 아니라 Crontab, SystemD 등을 통해 작업을 예약 할 수 있습니다.


고급 : Nice 명령과 함께 사용됩니다

PHP 내부에서 proc_nice ()을 호출하거나 제한된 호스트 환경에서 실행할 수없는 경우 운영 체제의 멋진 명령을 사용하여 PHP 스크립트를 외부에서 시작할 수 있습니다.

 nice -n -10 php /var/www/gitbox.net/scripts/heavy_task.php

이를 통해 생산 환경에서 배포에 적합한 우선 순위 제어가 가능합니다.