proc_nice în PHP

Procese și mediu PHP 5.0+ (Windows: PHP 7.2+)

Schimbă prioritatea procesului PHP curent, ca un script greu să lase loc altor programe.

Sintaxă
proc_nice(int $priority): bool

Ce face proc_nice

Pe Linux și macOS, fiecare proces are o valoare „nice” între -20 (prioritate mare) și 19 (prioritate mică). proc_nice(10) crește valoarea cu 10, deci scriptul primește mai puțin timp de procesor când serverul este ocupat. Este util pentru importuri, backup-uri și rapoarte rulate din cron.

Un utilizator obișnuit poate doar să scadă prioritatea (valori pozitive). Valorile negative cer drepturi de root.

Parametri

Parametru Descriere
$priority Cu cât se schimbă valoarea nice. Pozitiv scade prioritatea, negativ o crește.

Ce returnează

true la succes, false la eroare.

Exemple

Exemplul 1: Prioritate mai mică pentru un import

Citim valoarea nice a procesului cu ps înainte și după.

<?php
$nice = fn() => (int) trim(shell_exec("ps -o ni= -p " . getmypid()));

$inainte = $nice();
var_dump(proc_nice(5));
echo "Valoarea nice a crescut cu " . ($nice() - $inainte);

Rezultat

bool(true)
Valoarea nice a crescut cu 5

Greșeli frecvente

  • Apelezi proc_nice(-5) fără root. Primești Warning: ... Only a super user may attempt to increase the priority și false.
  • Crezi că poți reveni la prioritatea de dinainte. Un utilizator obișnuit nu poate scădea valoarea la loc; schimbarea rămâne până la finalul procesului.

Comenzi înrudite

  • proc_open: Pornește un proces cu control complet: canale separate pentru intrare, ieșire și erori, director și variabile de mediu proprii.
  • set_time_limit: Stabilește câte secunde poate rula scriptul înainte să fie oprit.
  • sleep / usleep: Oprește scriptul pentru un număr de secunde (sleep) sau de microsecunde (usleep).