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

Bagaimanakah Saya Boleh Mendapatkan Output Masa Nyata daripada Proses PHP?

DDD
Lepaskan: 2024-12-23 18:34:14
asal
556 orang telah melayarinya

How Can I Get Realtime Output from a PHP Process?

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
);
Salin selepas log masuk

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 "
";
Salin selepas log masuk

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:

  • Gunakan proc_terminate() untuk mematikan proses secara eksplisit apabila skrip keluar.
  • Gunakan pcntl_signal() untuk memerangkap pengguna meninggalkan halaman dan matikan proses dengan sewajarnya.
  • Tetapkan tamat masa untuk proses dan tamatkannya secara automatik selepas tempoh yang ditentukan.

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan