2012-04-10 59 views
2

大約100行數據使用$ .POST(JQuery的)作爲JSON陣列公佈。 但由於某些原因,並未收到所有行。

數據看起來或多或少像這樣(的內容基本上都是數字和小弦):

rows = [["U", "0", "81949", 32 more...], ["U", "0", "81950", 32 more...] ..... ] 

我發送數據的方式是:

$.post(url+"callback=?", { data : rows }, function(){}, "json"); 

如果我附和在本地版本中收到的行數(count($ _ POST))顯示爲「100」,但在生產服務器上顯示「25」(每次都是相同的數量)。

檢查的螢火請求細節,它正確地顯示,所有100個已發送。

我雖然它可能是PHP「的post_max_size」的價值,但我不得不將其設置爲「100M」,我認爲是遠遠不夠。

我敢肯定它必須與服務器的設置,但我的想法...... 在此先感謝。

UPDATE:

  • 生產服務器的內存,這是使用約 一半的8GB(它不是一個記憶的問題)。
  • 沒有超時(所有過程在大約3秒內完成)。
+1

存在用於JSON的限制,像其他數據: 在這裏看到: [此處輸入鏈路描述] [1] [1]:http://stackoverflow.com/questions/ 1262376/is-a-limit-on-how-much-json-can-hold – 2012-04-10 06:23:22

+0

見http://www.phpfreaks.com/forums/index.php?topic=260148.0? – Bergi 2012-04-10 06:24:32

回答

3

是使用​​生產服務器? Suhosin常常是限制請求大小的罪魁禍首,GET和POST都是。他們對POST和GET大小有不同的限制(事實上,一個會影響我記得的另一個,因此兩者都必須增加)。

看看你的phpinfo(),看看有沒有關於suhosin的東西。

了Suhosin值可能影響你:

  • suhosin.get.max_vars
  • suhosin.post.max_vars
  • suhosin.request.max_vars

(+它們的等價物爲值和var長度)

另外,如果你正在上傳文件,那麼這也受到suhosin的限制:

  • suhosin.upload。max_uploads(這是,因此,25默認情況下)
+0

你是對的!我忘了那個......我通常會移除Suhosin,因爲它之前也造成了其他問題。我只是忘了在這個新的服務器上做。非常感謝!你救了我的一天! – lepe 2012-04-10 06:57:41

+0

我很高興:)快樂編碼! – kingmaple 2012-04-10 06:58:03

0

查詢數據的最大尺寸 - 請參閱here。 問題可能是2中的一個。正在接收數據的任何一部分,或者PHP在一定數量後刪除數據。在PHP中查看here的設置。

+1

謝謝,但正如我之前所說,「post_max_size」設置爲100MB。我認爲它甚至不會使用1MB。 $ _POST的最大查詢數據適用於$ _GET否。 – lepe 2012-04-10 06:36:00

+0

@lepe:看看@Bergi發佈的鏈接,你可能有'mod_security'或類似的阻止完整的請求。 – 2012-04-10 06:51:31

9

已經有一個接受的答案,但對於那些不使用了Suhosin,問題可以是低「max_input_vars」 PHP設置。我的默認設置爲1000,這還不夠。

+0

謝謝!搜索了這個問題幾個小時! – 2013-02-07 15:56:12

+0

哈哈,非常感謝!很簡單的答案:D – 2013-12-06 16:23:13