Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mencapai Pembilasan Output Masa Nyata dalam PHP untuk Log Langsung?
Output Flushing dalam PHP: Memaparkan Log Langsung Semasa Pemprosesan
Dalam PHP, selalunya wajar untuk memaparkan output kepada penyemak imbas pengguna sebagai skrip proses, dan bukannya menunggu keseluruhan skrip selesai. Ini boleh berguna untuk memaparkan log atau kemas kini kemajuan dalam masa nyata. Walau bagaimanapun, secara lalai, PHP menimbal output, bermakna ia tidak dihantar kepada klien sehingga akhir skrip.
Adakah 'ob_flush()' Cukup?
A pendekatan biasa untuk mengeluarkan output selepas setiap panggilan gema ialah menggunakan fungsi ob_flush(). Walau bagaimanapun, ini hanya sebahagiannya menyelesaikan masalah. Walaupun ia mengepam penimbal output, ia sebenarnya tidak menghantar data kepada pelanggan.
PHP atau Apache Fault? Menyiasat Masalah
Jika ob_flush() tidak berfungsi, ia boleh menjadi masalah sama ada dengan konfigurasi PHP atau tetapan Apache. Untuk menyemak konfigurasi PHP, jalankan arahan berikut:
php -i | grep output_buffering
Ini sepatutnya menunjukkan sama ada penimbalan output didayakan dan saiz penimbal. Jika penimbalan output dilumpuhkan, itu bukan punca masalah.
Penyelesaian Terunggul
Penyelesaian muktamad kepada isu ini terletak pada menetapkan saiz penimbal output kepada 0 . Ini memberitahu PHP untuk menghantar output kepada pelanggan dengan segera tanpa menimbalnya.
ini_set('output_buffering', 0);
Akhir Fikiran
Dengan menetapkan saiz penimbal output kepada 0, anda boleh memastikan bahawa output dipadamkan selepas setiap panggilan gema, membolehkan pengguna melihat log atau kemas kini kemajuan anda dalam masa nyata.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pembilasan Output Masa Nyata dalam PHP untuk Log Langsung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!