Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Menjalankan dan Menguruskan Proses dengan Output Masa Nyata dalam PHP?

Bagaimanakah Saya Boleh Menjalankan dan Menguruskan Proses dengan Output Masa Nyata dalam PHP?

Linda Hamilton
Lepaskan: 2024-12-24 09:44:19
asal
129 orang telah melayarinya

How Can I Run and Manage Processes with Real-time Output in PHP?

Menjalankan Proses dengan Output Masa Nyata dalam PHP

Menjalankan proses pada halaman web yang menyediakan output masa nyata boleh menjadi ciri yang berharga. Contohnya, melaksanakan proses 'ping' dan menangkap baris keluarannya demi baris boleh meningkatkan pengalaman pengguna. Untuk mencapai ini dalam PHP, pertimbangkan pendekatan berikut:

Untuk menjalankan proses dengan output masa nyata, anda boleh menggunakan proc_open(). Berikut ialah contoh:

$cmd = "ping 127.0.0.1";

$descriptorspec = array(
   0 => array("pipe", "r"),   // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),   // stdout is a pipe that the child will write to
   2 => array("pipe", "w")    // stderr is a pipe that the child will write to
);
flush();
$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());
echo "<pre class="brush:php;toolbar:false">";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        flush();
    }
}
echo "
";
Salin selepas log masuk

Dalam contoh ini, proc_open() digunakan untuk menjalankan perintah 'ping 127.0.0.1' dan menangkap outputnya dalam masa nyata. Tatasusunan descriptorspec mentakrifkan deskriptor fail untuk proses tersebut. Khususnya, ia menetapkan stdin sebagai paip untuk proses kanak-kanak membaca daripadanya, stdout sebagai paip untuk proses kanak-kanak menulis kepadanya dan stderr sebagai paip untuk proses kanak-kanak menulis kepadanya.

flush() digunakan untuk memastikan bahawa sebarang output daripada proses kanak-kanak dipaparkan serta-merta. is_resource($process) menyemak sama ada proses anak masih berjalan. Gelung while terus membaca output daripada paip stdout proses anak dan mencetaknya ke halaman web, membolehkan anda melihat hasil ping dalam masa nyata.

Membunuh Proses Berjalan

Untuk mematikan proses anak apabila pengguna meninggalkan halaman, anda boleh menggunakan proc_terminate(). Untuk proses 'ping', anda boleh menggunakan kod berikut:

proc_terminate($process);
?>
Salin selepas log masuk

Ini akan menamatkan proses ping dan menghalangnya daripada terus berjalan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjalankan dan Menguruskan Proses dengan Output Masa Nyata dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan