2016-05-30 113 views
0

我有一個PHP腳本,用於查詢web服務。我希望將此查詢的結果插入到Firebase實時數據庫的一行中。然後,這個Firebase數據庫將被Android應用程序監視更改。在Firebase中壓縮數據

每行文本的數量通常可能是800 Kb,所以我想壓縮它。否則,在OnDataChanged事件發生之前,我的應用程序需要下載800 Kb。

我所做的是(在PHP腳本)

遵循我接受800KB串形成的Web服務。 然後我在PHP腳本中運行GZip。 結果,我使用Base64_Encode,這就是我將結果插入到Firebase的結果。

它似乎工作正常,我似乎得到約90%的壓縮,意味着只插入80Kb而不是800Kb。然而,這是一個「圓屋」的方式來做到這一點。

有沒有更好的方法來做到這一點?當然必須有。有沒有什麼辦法讓Firebase轉換爲GZip字符串發送給我的應用程序?在所有應用程序使用Firebase SDK之後。

這裏是PHP代碼寫入到火力地堡......

$compressed_gzipjson = gzencode($jsonresponse, 9); 

$firebase->set(DEFAULT_PATH . '/' , base64_encode($compressed_gzipjson)); 

任何意見非常歡迎的確。

+0

稍微修正,780KB壓縮到110Kb,還是不錯的。 – JohnMoll

+0

而不是在評論中添加更正,單擊您的問題下的[編輯](http://stackoverflow.com/posts/37534908/edit)鏈接,您可以修復它。 –

回答

1

這聽起來像是一個令人難以置信的浪費使用實時數據庫。 Firebase數據庫是同步小型結構化(JSON)數據的絕佳工具。它不適合非結構化數據,而且您可以使用文本格式來表示無需同步結構。

爲什麼不簡單地將文本存儲在更便宜的文件存儲機制(如Firebase Storage)中?然後將文件的URL存儲在Firebase數據庫中,並通過這種方式將其同步到客戶端。

+0

這些信息將每五六分鐘更新一次,Android客戶端每次都會通知新聞。當文件內容改變時,Firebase存儲選項會觸發對Android客戶端的更改嗎? – JohnMoll

+0

@JohnMoll,雖然Firebase存儲沒有實時通知,但您可以使用Realtime DB通知客戶端從存儲下載文件。 –

+0

現在我在做什麼有什麼不對嗎?它工作正常,我只是想確保沒有更好的方式之前,我承諾這種方法? – JohnMoll