2013-01-06 55 views
1

我用下面的代碼來管理從我的網站下載(該文件是一個驗證碼後):http://www.richnetapps.com/php-download-script-with-resume-option/下載多個文件與PHP同時 - 的分岔,插座

麻煩的是,正在下載文件時,它會鎖定網站的其他部分,並且無法同時下載其他文件。 ('Locks'就像在進行下載時試圖進入主頁一樣,導致等待很長時間,主頁只有在下載完成或取消時纔會出現,這是一個問題,因爲有些文件是幾個百萬MB)。

我想要兩件事情發生:1-爲了能夠在下載文件時瀏覽網站,以及2-能夠下載另一個文件(或兩個,三個或十個.. 。) 同時。

我的直覺是我需要分叉進程,創建一個新的或打開另一個套接字。但是我的方式已經走出了自己的深度,即使這是正確的方法,我也不知道該怎麼做。任何想法傢伙?

提前許多感謝....

編輯---- 我找到了!我在下載腳本中設置標題之前添加了session_write_close()。顯然這種行爲是由於PHP會話處理 - 進一步信息在這裏:php simultaneous file downloads from the same browser and same php script(我詢問之前搜索和搜索,但顯然錯過了這篇文章)。 非常感謝....

+0

你絕對不需要在PHP中實現它,也不應該嘗試這樣做。套接字已打開,並行請求在PHP級別以下** ** **。 Apache(或您使用的任何服務器)將爲您執行此操作。如果您的網站一次只允許一個請求,則需要正確配置您的服務器軟件。 – meagar

+0

你正在經歷的行爲聽起來很像PHP在用戶會話上設置的* normal *獨佔鎖。儘管示例代碼不使用會話,但您可能已經修改了它以執行此操作? – Charles

+0

查爾斯 - 我做到了!驗證碼驗證。我找到了解決方案,請參閱上面的我的編輯。感謝您花時間回覆您。 – Lewis

回答

0

內容分發網絡(CDN)將從您的服務器卸載,從而允許您的服務器處理主頁(或其他)頁面請求,並允許許多同時下載。它對帶寬應該更便宜,對大多數用戶而言可能更快。

關鍵將配置爲僅在您的驗證碼之後保護文件,而不是像大多數CDN設置一樣免費提供。