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
DDDasal
2024-12-23 18:34:14517semak imbas

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
);

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:

  • 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!

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