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.