proc_terminate în PHP

Trimite un semnal de oprire unui proces pornit cu proc_open (implicit SIGTERM).

Sintaxă
proc_terminate($process, int $signal = 15): bool

Ce face proc_terminate

proc_terminate cere procesului să se oprească, trimițându-i un semnal. Implicit este 15 (SIGTERM), pe care programele îl pot trata ca să se închidă curat. Pentru un proces care nu răspunde, 9 (SIGKILL) îl oprește forțat.

Funcția nu așteaptă oprirea. Verifică starea cu proc_get_status, apoi eliberează resursa cu proc_close, care returnează -1 pentru un proces oprit de semnal.

Parametri

Parametru Descriere
$process Procesul returnat de proc_open.
$signal Opțional. Semnalul trimis, implicit 15 (SIGTERM). Ignorat pe Windows.

Ce returnează

true dacă semnalul a fost trimis, altfel false.

Exemple

Exemplul 1: Oprirea unui proces lung

<?php
$p = proc_open(["sleep", "30"], [], $pipes);

var_dump(proc_terminate($p));
usleep(200000);

$s = proc_get_status($p);
var_dump($s["running"], $s["signaled"], $s["termsig"]);
var_dump(proc_close($p));

Rezultat

bool(true)
bool(false)
bool(true)
int(15)
int(-1)

Greșeli frecvente

  • Trimiți direct 9 (SIGKILL). Programul nu mai apucă să șteargă fișierele temporare sau să salveze. Încearcă întâi 15, apoi 9 dacă nu s-a oprit.

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.
  • proc_get_status: Returnează starea unui proces pornit cu proc_open: dacă mai rulează, PID-ul, codul de ieșire, semnalul care l-a oprit.
  • proc_close: Așteaptă terminarea unui proces pornit cu proc_open, îl închide și returnează codul lui de ieșire.