Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mendapatkan Output Masa Nyata daripada Proses PHP?
Jalankan Proses dengan Output Masa Nyata dalam PHP
Apabila melaksanakan proses dalam PHP, adalah wajar untuk memaparkan outputnya dalam masa nyata. Artikel ini meneroka kaedah untuk mencapai ini menggunakan fungsi exec() dan konfigurasi unik spesifikasi deskriptor.
Tangkapan Output Masa Nyata
Untuk menangkap output proses dalam masa nyata, anda perlu menentukan spesifikasi deskriptor berikut:
$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 );
Persediaan ini mengubah hala stdin, stdout dan stderr ke paip, membolehkan kami membaca dari stdout dalam masa nyata menggunakan fungsi fgets().
Contoh: Ping dengan Output Masa Nyata
Untuk menunjukkan kaedah ini, mari jalankan arahan ping dengan masa nyata output:
$cmd = "ping 127.0.0.1"; $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 "";
Kod ini akan mengeluarkan setiap baris proses ping apabila ia tersedia, memberikan paparan langsung trafik rangkaian.
Proses Penamatan
Menamatkan proses apabila pengguna meninggalkan halaman web boleh menjadi satu cabaran. Dalam kes proses yang berjalan lama seperti ping, mereka mungkin terus berjalan walaupun selepas halaman telah ditutup.
Untuk mengatasinya, seseorang boleh menggunakan teknik berikut:
Dengan melaksanakan kaedah ini, pembangun boleh memastikan proses dimulakan daripada skrip PHP mereka dikendalikan dengan betul apabila pengguna menavigasi keluar dari halaman.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Output Masa Nyata daripada Proses PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!