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 "";
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); ?>
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!