Output Masa Nyata dengan PHP's Shell Execution
Shell execution dalam PHP, menggunakan fungsi seperti shell_exec dan exec, boleh memberi manfaat untuk berinteraksi dengan sistem pengendalian. Walau bagaimanapun, secara lalai, fungsi ini memaparkan keseluruhan output hanya selepas arahan selesai. Ini mengehadkan keupayaan untuk memantau kemajuan atau memaparkan kemas kini masa nyata.
Penyelesaian: Melancarkan Output Langsung
Untuk mencapai paparan output masa nyata, PHP menawarkan dua utama pilihan:
popen() untuk Selari Interaksi:
popen() membolehkan anda mewujudkan saluran komunikasi dua hala dengan proses anak. Ini membolehkan anda membaca dan menulis kepada proses kanak-kanak seolah-olah ia adalah fail. Dengan menggunakan gelung dan fread(), anda boleh menangkap output dan memaparkannya secara dinamik.
passthru() untuk Output Terus:
Untuk pendekatan yang lebih mudah, passthru() boleh digunakan untuk mencetak terus output arahan ke penyemak imbas. Ia menyediakan cara yang mudah untuk menstrim hasil tanpa storan perantara.
Contoh Kod Menggunakan popen():
// Ensure flushing of output buffers while (@ ob_end_flush()); // Open the child process for reading $proc = popen($cmd, 'r'); echo '<pre class="brush:php;toolbar:false">'; // Keep reading and displaying output until EOF while (!feof($proc)) { echo fread($proc, 4096); flush(); } echo ''; // Close the process pclose($proc);
Nota:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Output Masa Nyata daripada Perintah Shell dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!