2013-10-01 64 views
17

我需要從jQuery到PHP發佈大約200x50(行,列)的表值。兩種選擇:與成千上萬的JSON字符串進行數千次的比較:什麼是可取的?

1)發送它作爲萬個瓦爾(增加的php.ini max_input_vars)陣列。

2)所述陣列序列化到一個JSON字符串,POST它作爲一個字符串和解碼回到在PHP在服務器端。

什麼是優選的?選項1有任何潛在的問題?

感謝


PS。更新。在一個大型輸入表上測試兩個藥劑達到250x50的單元格後,它看起來第一個選項要快得多:1-2秒與JSON串的17-20秒。

的瓶頸是數據傳輸時間到服務器對象到JSON和背部交易幾乎瞬間(幾毫秒)。

+0

我肯定會與選項#2去。 JSON POST有效負載可以很好地工作,不需要對服務器配置進行操作 – Phil

+5

爲什麼不嘗試這兩種方法,並告訴我們哪種方法更適合您? – Mark

+0

如果您有重複的參數名稱,這些將是傳輸數據的重要組成部分。所以我會盡量保持儘可能短,甚至儘量避免它們(在JSON中使用數組,而不是每個項必須重複鍵的對象)。 – CBroe

回答

0

我發送PUT請求到我們的服務器在體內的二進制數據,大概相當於10k的文字記錄和傳輸速度非常快。我可能會想知道那裏發生了什麼事情,無論是在一個人與另一個人的轉移時間裏,有什麼可能會誤導你。例如,後變量可能會認爲「轉移」是請求的不同階段。或者,如果你用行/列名或類似的東西給json結構添加了大量無關的行李?

如果被證明是真實,每種方法都有相當的性能 - 我個人與結構化JSON走在了身體,因爲它似乎更清潔和更容易地查看/調試VS一串編碼後的變量名。

另外 - 我不知道你的應用程序做什麼,所以你的方法可能是完全合適的。但我可能會考慮是否可以根據需要發送數據,而不是一次發送整個表。 (當人們不回答我的問題並嘗試給我一些替代方法來做事情時,我感到很惱火,所以最後一點點用一點鹽!但是人類看起來不尋常的是會觸及10k條記錄 - 要求他們都被同時發送到服務器)

0

您已經回答了您自己的問題。 開發軟件時應使用的代碼質量和性能之間存在合理的折中。

所以JSON是支持兩側(Javascript和PHP),並提供了在代碼中更好struture。

0

我覺得有很多因素。你在哪個環境下工作,服務器和客戶端在同一臺PC上? 你每天或每小時都必須這樣做嗎?

其他項目是否在同一臺服務器上,以便他們響應速度較慢?在一兩個月內你會有更多的10K的變量嗎?

如果您發佈的數據與第一個選項類似,由於JavascriptPHP快,您可以在某些時候丟失一些數據。

如果您可以異步執行此操作,請查找RabitMQ它是一臺Messaging Server,可在服務器準備就緒時執行工作(它速度也很快!) http://www.rabbitmq.com/

0

將它序列化爲JSON字符串,但使用json_encode()和json_decode(),因爲它速度更快。將變量放入一個對象中,然後將其串行化。

此外,JavaScript應該做更多的工作,因爲它會做客戶端,這不會讓服務器承受如此沉重的負載。

0

我會建議選項#1的變體。 JSON編碼器和解碼器被稱爲是越野車,並且存在跨平臺問題,但發佈數千個變量可能是一個問題。相反,您可以將所有後期變量作爲單個應用程序/ x-www-form-urlencoded後變量傳遞,然後使用parse_str()在PHP中解碼它們。

的Javascript:

data = "data="+escape("v[0][0]="+escape(v[0][0])); 

PHP:

parse_str($_POST['data'],$data); 
相關問題