2014-03-29 69 views
0

我有一個報告和統計應用程序,以基本表格格式顯示各種查詢結果。在報告結果頁面的底部是用戶將他們正在查看的報告結果下載到CSV文件的選項。與在線銀行類似的功能,您可以查看您的銀行交易,然後可選擇將交易歷史記錄下載到csv。PHP:從會話變量下載文件

這樣做的最佳實踐方法是什麼?

a。一個下載按鈕,用於觸發報表查詢重新運行並隨後傳輸到csv下載文件。

b。當查詢首次運行並在視圖中呈現時,控制器將報告對象保存在會話變量中。下載按鈕因此下載到來自會話變量的報告對象,而不必重新運行查詢。

我在選項B中看到的好處是雙重的。 1.報表查詢不必重新運行,從而減輕數據庫的負擔。 2.從會話變量下載的報告與報告結果中顯示的報告完全匹配。對於選項a,如果在查看報告的時間與觸發下載鏈接的時間之間有數據更新,則下載的報告可能與正在查看的報告有所不同。

如果使用會話變量方法,我應該考慮是否存在任何風險或缺陷?

在此先感謝您的任何意見或指導。

回答

0

你總結的問題被認爲很好。最後,這是一個你必須做出的折衷。但是,請注意,您不能將資源(如MySQL結果)存儲在$_SESSION(我不確定您引用的「報告對象」是自寫報告類的實際對象,還是您引用的是從數據庫)。我個人更喜歡選項B,因爲它保證不會提供與應用程序中可見的結果不同的結果。

+0

感謝您的輸入。是的,要存儲在會話變量中的對象是格式化爲下載到csv的報告輸出的自定義報告類。我唯一擔心的可能是安全或服務器內存負載問題,將對象存儲在內存中,或者根據請求將它們簡單地傳輸到瀏覽器。 – mass6