Output Masa Nyata daripada Proses Berjalan dalam PHP
Dalam pembangunan web, selalunya perlu untuk melaksanakan proses pada pelayan dan memaparkannya output kepada pelanggan dalam masa nyata. Fungsi ini penting untuk tugas seperti memantau sumber sistem, mengumpulkan log atau menyepadukan dengan alatan luaran.
Melaksanakan Perintah dengan Output Masa Nyata
Untuk melaksanakan proses dan tangkap outputnya dalam PHP, anda boleh menggunakan fungsi proc_open(). Fungsi ini membolehkan anda menentukan arahan, aliran input/output dan pilihan lain untuk menjalankan proses. Contoh berikut menunjukkan cara menggunakan proc_open() untuk melaksanakan perintah 'ping' dan menstrim outputnya:
$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 "";
Dalam skrip ini, arahan 'ping' dilaksanakan dan stdoutnya diubah hala ke paip. Gelung membaca secara berterusan daripada paip dan mencetak output ke halaman web.
Menamatkan Proses Masa Nyata
Apabila halaman dimuatkan, proses 'ping' dimulakan dan terus berjalan sehingga halaman ditutup. Untuk menamatkan proses dengan betul apabila halaman dipunggah, anda boleh menggunakan fungsi proc_terminate():
proc_terminate($process);
Fungsi ini akan menghantar isyarat kepada proses untuk menamatkan pelaksanaannya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Output Masa Nyata daripada Menjalankan Proses dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!