Nasıl içerik uzunluğu olmadan PHP veri göndermek için?

4 Cevap php

Ben bunun mümkün olduğunu biliyorum, ama ben onu anlamaya gibi olamaz.

Ben bir kaç yüz bin sonuçları olan bir mySQL sorgu var. Ben sonuçları göndermek için mümkün olmak istiyorum, ama bu tepki indirmeye başlamak için içerik-uzunluk başlığı gerektirir görünüyor.

Eğer bir veritabanı ihracat giderseniz phpMyAdmin, bu hemen indir başlar, FF sadece bilinmeyen dosya boyutu diyor, ama çalışıyor. Ben bu kodu baktım ama çözemedim.

Yardım?

Teşekkürler.

4 Cevap

this document bölümündeki 14.14 bildiren In HTTP, it SHOULD be sent whenever the message's length can be determined prior to being transferred, unless this is prohibited by the rules in section 4.4. Eğer bunun boyutunu diyemeyiz eğer gönderilmesi gerekir ETMEZ demektir.

Sadece göndermek yok.

Eğer tüm veriler mevcuttur önce yapmak size flush, çıktı tamponu, tarayıcıya veri parçalarını göndermek istiyorsanız? Belki de bu sorunun bir başlığın eksikliği değil, ne var?

Floş kullanmak yolu böyledir:

  • Tampon eklemek gerekir generate bazı çıktı,
  • flush() bunu, müşteri için geçerli tampon göndermek hangi
  • Goto 1

Sorgu sonuçlarının çok döndürür Yani, sadece için çıktıyı üretmek, bu yüzden bunların üzerinde 100 veya 1000, sonra yıkayın, ve, diyelim.

Ayrıca, yerine penceresinde görüntülemeden bir dosyayı kaydetmek için girişimi için istemci tarayıcısını anlatmak için, siz de Content-disposition: attachment başlığını kullanarak deneyebilirsiniz. Burada specification Bak, 19.5.1 bölüm.

Bu elde edilecek tüm içerik bekler gzip kullanarak mümkündür. Bu ilgili direktifler için. Htaccess kontrol edin.

Bir Content-Length başlık alanını kurmak gerekmez. Bu başlık alanı sadece beklenen gereken veri miktarını müşteri anlatmaktır. Aslında, bir "yanlış" değer istemci bazı verileri atacaktır ki neden olabilir.

Sen yığın halinde transfer kodlamasını kullanabilirsiniz. Temelde, bir "aktarım kodlaması: chunked" göndermek ve ardindan veriler öbek ardından bir öbek uzunluğu göndermek, yani yığın halinde modunda gönderilir. Eğer sıfır uzunlukta bir yığın göndermek hangi noktadan veri sonuna kadar bu tekrarlamaya devam.

Ayrıntılar RFC 2616 içindedir.