php curl 獲取資料不完整

2021-08-01 12:55:27 字數 911 閱讀 8285

curl獲取資料的時候,結果的字串長度比較大。 相同的結果每次獲取的資料都不全,並且長度也不一樣。

試著把 header資訊修改為except: 但還是不行(這個可以解決的問題是資料量太大導致獲取結果為空的情況)。

去掉curlopt_returntransfer = true

可以列印出完整資料

解決方案:

修改資料來源伺服器的nginx快取配置

fastcgi_buffers 由原來的 8*128k修改到8*1m

以下引自

nginx的buffer機制,對於來自 fastcgi server 的 response,nginx 將其緩衝到記憶體中,然後依次傳送到客戶端瀏覽器。緩衝區的大小由 fastcgi_buffers 和 fastcgi_buffer_size 兩個值控制。

比如如下配置:

fastcgi_buffers 8 4k; 

fastcgi_buffer_size 4k;

fastcgi_buffers 控制 nginx 最多建立 8 個大小為 4k 的緩衝區,而 fastcgi_buffer_size 則是處理 response 時第乙個緩衝區的大小,不包含在前者中。所以總計能建立的最大記憶體緩衝區大小是 84k+4k = 36k。而這些緩衝區是根據實際的 response 大小動態生成的,並不是一次性建立的。比如乙個 8k 的頁面,nginx 會建立 24k 共 2 個 buffers。

當 response 小於等於 36k 時,所有資料當然全部在記憶體中處理。如果 response 大於 36k 呢?fastcgi_temp 的作用就在於此。多出來的資料會被臨時寫入到檔案中,放在這個目錄下面。

記憶體中緩衝了 36kb,剩下的會寫入的檔案中。而實際的情況是,執行 nginx process 的使用者並沒有 fastcgi_temp 目錄的寫許可權,於是剩下的資料就丟失掉了。

jsoup獲取響應內容不完整

jsoup抓取網頁只能抓取一部分不能完整獲取響應內容時,一般有以下幾個原因。1.網路異常,這個很少發生,jsoup會報告exception 2.網路超時,可以設定 connection.timeout n 增加超時時間。3.看起來都正常,沒有異常發生。但是獲取的資料就是少了一截。如果獲取到的資料不超...

Verilog不完整if else,case鎖存

僅在組合邏輯電路 電平觸發 中產生鎖存,因時序邏輯電路本身具有儲存功能 邊沿觸發,邊沿到來前保持原狀 去掉注釋後 q 1 b0 若寫q q 仍鎖存器 rtl analysis schematic if else以上三種情況 去掉注釋後 僅此處無reg,因二選一選擇器不存值 module latcho...

java讀取串列埠資料不完整

從串列埠讀取位元組之前先延時50ms,之前!之前!之前!後面又出現了問題,傳送指令也需要延時!否則一條指令傳送不完整,獲取到的應答包就會出錯。public static byte readfromport serialport serialport try catch interruptedexce...