2011-06-25 6 views
6

Bir sunucudaki bir JSON nesnesinden gelen metin çıktısını, nesne istemiş olan mobil aygıtıma taşımadan önce sıkıştırmak istiyorum. Txt sıkıştırmanın küçük bir testi, boyutunu yaklaşık% 80 oranında azaltacaktır! Bu mobil cihazlar için harika!PHP'de göndermeden önce bir JSON nesnesini sıkıştırın

Gerçekten sunucuda oluşturduğum zip dosyasını kaydetmem gerekmiyor, sadece bellekte kalmalı, sonra yankılanmalı. Ben android tarafında hiçbir sorun çözebilir.

Neyse, ben biraz manipülasyon yaptık ama çalışan bir alet ile gelip edemedik, burada ben bugüne kadar ne:

while($e=mysql_fetch_assoc($q)) 
    $output[]=$e; 
$zip = new ZipArchive(); 
$zip->addFromString("test",(json_encode($output))); 
echo $zip; 

ben im muhtemelen kitlesel yanlış bir şey yapıyorum biliyorum , php ile çok aşina değilim. $ Q'm çok sayıda sql satırı içeren bir imleçtir ve tüm zip shenanigans yerine print(json_encode($output)); kullanırsam, ham metni çıkarmak için iyi çalışır.

Sanırım, sıkıştırılmış sıkıştırmak zorunda değilsiniz, ancak herhangi bir sıkıştırma bana doğru bir şekilde işaret ederseniz yardımcı olabilirsiniz. Teşekkürler!

+2

PHP verilerini sağlamak için bir web sunucusu kullanıyorsanız standart gzip/deflate kullanmayı düşünün. Daha da sıkıştırmak, o kadar yardımcı olmamalıdır. Eğer müşteri ucunuz ungzip/deflate olabilirse, bunun uygulanması için yeterli ve basit olması gerekir (çünkü bunu hiç uygulamak zorunda kalmazsınız). İlgi alanlarımla ilgili – Kissaki

+1

+1 soru. –

cevap

9

Eğer ob_gzhandler ile ob_start kullanabilirsiniz:

if(function_exists('ob_gzhandler')) ob_start('ob_gzhandler'); 
else ob_start(); 

echo json_encode($output); 
ob_end_flush(); 
+1

+1, İyi cevap iyi soru. @knittl, sıkıştırılmış/kodlanmış verilerin istemci tarafında json'a nasıl açılacağını/çözüleceğini açıklayabilir. –

+0

@Imram: istemciler (tarayıcılar) verileri otomatik olarak siler (muhtemelen kutudan çıkmıyorsa doğru http başlıklarını gönderir). json kod çözme gerekli değildir, çünkü json zaten javascript kodu geçerli. – knittl

+1

Android'in gzip http istek yetenekleriyle etrafta dolaştıktan sonra, bu çalışmayı anladım. Sunucum (ve oyuncunun veri planları) teşekkür ederim! – Eric

0

Sunucu Tarafı: JSON nesnesi sıkıştırılmış ve müşteriye göndermek olan bir bayt dizisi olan sadece bir özellik içeriyor bir JSON nesnesi oluşturun. İstemci Tarafı: Özgün JSON VERI elde etmek için nesnede bulunan bayt dizisini ayıklayın. Pro: 5X En hızlı iletişim Sunucu-İstemcisi, Sunucu için daha az IO çalışması. Daha fazla CPU çalışması gerektirir. Değerlendirmenizi yapın: P