2012-07-29 84 views
0

我試圖下載一個7GB的文件使用php-curl,但它似乎只會下載第一個2GB。繞過PHP CURL 2GB的下載限制

似乎沒有任何文檔或談論這個。

任何人有任何想法?

+0

不同的文件系統對文件大小有限制,http://en.wikipedia.org/wiki/Comparison_of_file_systems,哪一個是你的? – ajreal 2012-07-29 16:58:25

+0

centos 64bit,ext4 – 2012-07-29 17:16:41

+0

http://curl.haxx.se/mail/lib-2003-08/0145.html http://curl.haxx.se/mail/lib-2010-08/0054.html – ajreal 2012-07-30 16:51:10

回答

2

下面是關於該主題兩個有用的鏈接:

Downloading a large file using curl

How to partially download a remote file with cURL?

基本上,你可以有兩個問題在這裏:

  • 您正在閱讀到內存中第一次作爲這樣用盡PHP的內存分配
  • 你需要大塊downloa d文件克服HTTP協議中的某些限制。

也有文件系統的限制和什麼不檢查您的文件系統類型,如@ajreal所述(即FAT32有4GB的限制,99%的機會你不使用FAT,但仍然是一個例子)。

由於OP發現了它是做與DB:

原來這是一個數據庫的問題。文件大小存儲在一個mysql數據庫中,大小以字節爲單位,「int」列的最大大小爲 2147483648.將列類型更改爲「bigint」修復了問題。

+0

I我正在PHP中使用內容配置,第一個鏈接如何使用它來回顯字節而不是寫入文件? – 2012-07-29 17:27:00

+0

@JakeCattrall而不是使用cURL opt文件,你可以像使用2GB的問題那樣正常地獲取內容,用這個文件緩慢(或快速)填充服務器內存,這可能是我沒說的。 – Sammaye 2012-07-29 18:35:16

+0

CURLOPT_WRITEFUNCTION是否使用ram?即便如此,我擁有34GB內存,所以我並不擔心這一點。我只需要以某種方式繞過這個限制... – 2012-07-29 19:22:54

0

假設你的文件系統可以處理大於2GB的文件,你可以嘗試使用copy

copy("http:://example.org/your_file","/tmp/your_file"); 

還要確保您設置一個適當的期限(含set_time_limit(...))。