2011-03-24 19 views
27

Şu anda sonuçları görmek için kodun tamamının yürütülmesini beklemek zorundayım. Tamamlanana kadar askıda kalıyor ve yükleme devam ediyor. Tamamlandığında, aradığım tüm bilgileri gösterir. Komut dosyası çalışırken hala bunu göstermek için var mı? Öyleyse kodumun üstünde bir yerde bir yazım varsa, betiğin yürütüldüğü zaman çağrılmadığını göstermek istiyorum.Script hala devam ederken sonuçları göster

Bunu nasıl yapacağını bilen var mı?

Teşekkür

+0

Eğer ') (ob_start' önce ajax veya php – Gowri

cevap

48

Böyle output buffering kullanabilirsiniz:

ob_start(); 

echo('doing something...'); 

// send to browser 
ob_flush(); 

// ... do long running stuff 
echo('still going...'); 

ob_flush(); 

echo('done.'); 
ob_end_flush(); 
+3

ben 'ob_implicit_flush (true) ekledikten sonra Benim için çalıştı' bahsediyoruz; – Bivis

+0

Ob_implicit_flush (true) eklemek zorunda kaldım ve ayrıca php.ini dosyasında output_buffering = Off değerini ayarladım – embe

3

Yapabileceğin çıktı arabelleklemesi ile o. Komut dosyanızın üstündeki çıkış arabelleğini ob_start() ile açın. Bu, PHP'nin tarayıcıya hiçbir çıkış göndermesini sağlar. Bunun yerine kendi içinde depolanmış. Çıktınızı istediğiniz zaman ob_flush() ile temizleyin ve içerik tarayıcıya gönderilecektir.
Ancak, çıktı arabelleklemesinin diğer birçok faktör tarafından etkilendiğini unutmayın. IIS'nin bazı sürümleri, komut bitene kadar bekleyecektir, çıktı arabelleklemesini yok sayar. Ve istemci tarafında bazı Antivirüs yazılımı (Bu Panda?) Tarayıcıya geçmeden önce sayfa tam olarak yüklenene kadar bekleyebilir.

0

Bu seferki benim için çalıştı: (source)

function output($str) { 
    echo $str; 
    ob_end_flush(); 
    ob_flush(); 
    flush(); 
    ob_start(); 
} 
İlgili konular