Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mencapai Output Langsung daripada Perintah Shell PHP?

Bagaimanakah Saya Boleh Mencapai Output Langsung daripada Perintah Shell PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-01 00:41:11430semak imbas

How Can I Achieve Live Output from PHP Shell Commands?

Output Langsung dengan PHP Menggunakan popen() dan passthru()

Fungsi shell_exec() PHP membolehkan anda melaksanakan arahan dan menangkapnya keluaran. Walau bagaimanapun, memaparkan output secara langsung semasa pelaksanaan perintah tidak boleh dilakukan dengan shell_exec() atau fungsi terbina dalam lain seperti system(), exec(), atau passthru().

Untuk output langsung, pertimbangkan untuk menggunakan popen( ) sebaliknya. Ia membuka paip kepada proses dan membolehkan anda membaca atau menulis input/outputnya seolah-olah ia adalah fail.

Passthru() untuk Output Segera:

Jika anda perlu memaparkan output terus kepada pengguna tanpa menunggu arahan selesai, anda boleh gunakan passthru():

echo '<pre class="brush:php;toolbar:false">';
passthru($cmd);
echo '
';

Popen() untuk Output Masa Nyata:

Untuk memaparkan output secara langsung semasa arahan dijalankan, gunakan popen() dan a gelung while:

while (@ ob_end_flush()); // end output buffers

$proc = popen($cmd, 'r');
echo '<pre class="brush:php;toolbar:false">';
while (!feof($proc)) {
    echo fread($proc, 4096);
    @ flush();
}
echo '
';

Kod ini membuka paip kepada arahan, membaca outputnya dalam ketulan dan memaparkannya pada fly.

Maklumat Berguna:

  • Panggil session_write_close() sebelum gelung untuk mengelakkan isu sesi.
  • Untuk pelayan di belakang nginx, tambah pengepala 'X-Accel-Buffering: no' untuk mengelakkan nginx penimbalan.
  • Perhatikan bahawa output langsung mungkin mengganggu jika kod anda berjalan dalam gelung yang turut mengemas kini sesi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Output Langsung daripada Perintah Shell 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