Mengakses Output Langsung melalui PHP dengan Perintah Shell
Fungsi shell_exec PHP menyediakan cara yang mudah untuk melaksanakan perintah shell dari dalam skrip PHP. Walau bagaimanapun, ia boleh menjadi mencabar untuk mendapatkan semula output langsung arahan ini semasa masa jalan. Artikel ini meneroka dua kaedah untuk mencapai kefungsian ini.
popen() dan Interaktiviti
Untuk berinteraksi dengan proses dan membaca outputnya semasa ia berjalan, gunakan popen() . Fungsi ini mengembalikan penuding fail yang boleh dilayan seperti mana-mana sumber fail lain.
$proc = popen($cmd, 'r'); echo '<pre class="brush:php;toolbar:false">'; while (!feof($proc)) { echo fread($proc, 4096); @flush(); } echo '';
Skrip ini memulakan arahan, membaca outputnya dalam ketulan 4096 bait dan mencetaknya terus ke halaman. Panggilan flush() memastikan output dipaparkan serta-merta.
Kemudahan dengan passthru()
Jika interaktiviti langsung tidak diperlukan, passthru() menyediakan pendekatan alternatif. Fungsi ini secara langsung menggemakan output arahan ke halaman.
echo '<pre class="brush:php;toolbar:false">'; passthru($cmd); echo '';
Walaupun passthru() adalah lebih mudah, ia mengeluarkan keseluruhan hasil arahan sekaligus, yang mungkin tidak sesuai untuk arahan yang menghasilkan jumlah yang besar daripada output.
Kesimpulan
Kedua-dua popen() dan passthru() menawarkan berbeza mekanisme untuk mengakses output langsung daripada arahan shell dalam PHP. popen() menyediakan kawalan terperinci ke atas pengambilan data, membenarkan kemas kini masa nyata. passthru(), sebaliknya, mengorbankan interaktiviti untuk kemudahan penggunaan, menjadikannya sesuai untuk senario di mana output segera dikehendaki.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Output Langsung daripada Perintah Shell dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!