2011-12-20 89 views
1

我需要讓用戶下載一些文件(例如PDF)。什麼會比較長:通過PHP或通過直接鏈接更快地下載文件?

  • 由PHP(與特定的頭文件)發送該文件,
  • 或把它放在HTTP公共文件夾,並得到用戶的公共鏈接下載它(沒有PHP幫助)?

在第一種情況下,原始文件可能在私人區域。 但我想這將需要一些時間來發送這個文件的PHP。

那麼如何衡量PHP花費的時間來發送文件以及它可以消耗多少內存呢?

P.S.在第一種情況下,當PHP發送頭文件和瀏覽器(如果安裝了pdf插件)將嘗試在瀏覽器中打開它,PHP仍在工作,或者它在頭文件立即發送後推出整個文件?或者,如果插件沒有安裝,瀏覽器會顯示「另存爲」對話框PHP仍在工作?

+2

PHP花費的時間可以忽略不計。什麼會影響你和客戶的網絡連接。換句話說:你不必測量時間。只實施一個解決方案。 – Gordon 2011-12-20 11:00:25

+0

在PHP發送文件的情況下,用戶會看到「另存爲」對話框並決定要做什麼,PHP會等待用戶的回答?內存將被使用?直到用戶決定點擊保存或取消,對吧? – user1016265 2011-12-20 19:23:24

回答

2

如果您擔心下載速度,它將會很少。

我猜這取決於您的文件有多大,您希望擁有多少下載,以及您的文檔應該公開訪問,還是客戶端的下載速度。

+0

這裏主要關心的是內存使用情況。 我在想,單一的Apache會吃少量的內存,然後Apache + PHP。看起來,即使用戶在「另存爲」對話框中想要做什麼,PHP仍會保留花費的內存。你怎麼看 ? – user1016265 2011-12-20 19:17:13

+0

是的,PHP可能會使用更多的內存。將該文件作爲靜態文件提供,我個人認爲這是最簡單的,最容易實現的。 – 2011-12-21 08:21:14

1

你用PHP主要問題是它佔用的內存 - 每個環節都會創建一個新的進程,這將是可能8M - 20M取決於你的腳本做什麼,不管你使用了框架等

出的興趣,我寫了一個symfony應用程序來提供下載,並執行諸如併發限制,帶寬限制等。如果您有興趣查看代碼,那麼它就是here。 (我本人沒有授權,但如果你喜歡,我很樂意使它成爲GPL3)。

+0

這是我關心的地方。如果1K人會嘗試打開每個自己的文件,該怎麼辦?如果文件將由Apache單獨發送,似乎內存支出將會減少。 – user1016265 2011-12-20 19:21:10

+0

正確。一般來說,如果你想做一些像併發限制這樣的事情(如果你使用正確的可選模塊,甚至可以通過Apache來完成),你應該只使用腳本化的過程。如果您只想提供基於密碼/基於會話的安全性,那麼您可以創建無法猜測的目錄結構(可能包括散列),並從該結構內部創建符號鏈接到Web樹外的實際文件。可以使用cron-job來刪除過期的文件夾。 – halfer 2011-12-21 14:00:23

+0

注意:如果您的PHP進程需要16M,那麼1000個併發用戶將佔用大約16G的RAM - 如果您有自己的服務器,這很好。但是,當然,您可能會限制系統在繁忙時段拒絕超額用戶的請求。最後,值得做一些研究,看看你可以合理得到什麼級別的請求:網站受歡迎程度的大多數預測都被高估了,imo。 – halfer 2011-12-21 14:03:15

相關問題