2011-02-11 46 views
3

我很抱歉打擾了你我的問題,但我面臨着一個問題,我有一些麻煩來解決。PHP下載大文件的隱藏url鏈接的簡歷

我有一個網站,有一個登錄受限區域。

一旦用戶登錄,他可以訪問我公司的文件(大文件)

但爲了避免鏈接被在互聯網上所有的傳播,當用戶要下載的文件,位於上外部網址:他點擊一個url,其中包含md5中加密的文件的名稱,該文件將重定向到將在php中生成的php腳本,並使用fsockopen下載頭文件。

但是,這並不支持下載的簡歷,當我們下載2或3 GB的某些文件或者當您使用下載程序時,這不是很實用。

我怎樣才能啓用簡歷? 我已經看到一些使用fread方法的PHP腳本,但是我不認爲這對我來說是個好主意,因爲對於大文件,它可能會使服務器滯後。當您在2GB文件上執行漸進式fread時,在他們是30位同時下載文件的過程中,祝你好運。

+0

「當你做一個漸進的fread ...」 - 當多人在不同的時間開始下載完全相同的事情;) – ThiefMaster 2011-02-11 15:39:36

回答

0

如果您使用fopen()fseek()this,您基本上與任何Web服務器都做同樣的事情來回復HTTP-RANGE請求。

+0

不幸的是,在一個2 GB的文件嘗試使用這種方法與一個單一的請求php scripti得到我的apache進程運行我的CPU的23%..使用一個簡單的http調用在同一個文件上的直接url甚至沒有看到過程....但也許我錯了某處..無論如何謝謝爲您的答覆;) – Anselme 2011-02-11 17:29:47

+0

你尋找後嘗試`fpassthru`? – rik 2011-02-12 00:17:14

0

你可以讓這個不允許,除非它們被記錄到要下載的文件。

因此,而不是爲他們提供直接鏈接到該文件中,他們得到類似foo的鏈接。 com/download.php?myfile.ext

而且download.php會在向用戶提供文件下載之前檢查會話。