Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mendapatkan Output Masa Nyata daripada Menjalankan Proses dalam PHP?

Bagaimanakah Saya Boleh Mendapatkan Output Masa Nyata daripada Menjalankan Proses dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-14 02:56:10798semak imbas

How Can I Get Real-Time Output from Running Processes in PHP?

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!

Kenyataan:
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