2011-09-07 51 views
0

所以,我搜索了一些在這裏,但沒找到什麼好東西,道歉,如果我的搜索福是不夠的......通過XML API與大量數據處理的

所以,我今天是我的用戶使用表格將CSV文本文件上傳到我的PHP腳本,然後在驗證其中的每一行後,將該文件導入到數據庫中。該文本文件可以放在約70,000行,每行包含24個值的字段。自從處理這種數據後,這顯然不是問題。每行都需要驗證,並且我檢查數據庫是否有重複項(根據數據生成的動態關鍵字)確定是否應該插入或更新數據。

沒錯,但我的客戶現在正在爲此請求一個自動API,因此他們不必手動創建並上傳文本文件。當然,但我該怎麼做呢?

如果我要使用REST服務器,如果一個請求包含用於插入70k個帖子的XML,內存將會非常快地耗盡,所以這幾乎不存在問題。

那麼,我該怎麼做呢?我曾經想過三個選項,請幫助MED決定或加入更多的選項列表中每個請求

  1. 一個職。並非所有客戶端都有7萬個帖子,但對數據庫的更新可能會導致API在短時間內處理70k個請求,並且可能每天都以這種方式進行。

  2. 每個請求的帖子數X.設置API處理每個請求的帖子數量限制爲一次設置爲100個。這意味着700個請求。

  3. API需要客戶端腳本上傳CSV文件,準備使用當前例程導入。這看起來很「脆弱」,並不是很現代。

還有其他想法嗎?

+1

我不確定這裏有什麼意義。您的客戶不想創建CSV文件,但他們寧願創建一個XML文件?也許一個更大的光點到這應該幫助我們更好地理解,並因此幫助您決定... – shadyyx

+0

他們寧願使用Web服務,而不是創建一個XML文件。大多數Web服務方法(SOAP,REST,XMLRPC)都與XML通信,因此我引用了XML。 – Sandman

回答

0

我現在已經通過對每個請求強加了100個帖子的限制來解決這個問題,並且我通過PHP使用REST來處理數據。上傳36,000個帖子需要大約兩分鐘的時間進行所有驗證。

-1

首先不要爲此使用XMl!使用JSON,它比xml快。

我用我的項目從xls導入。文件非常大,但腳本工作正常,只是客戶端必須創建具有相同結構的文件以便導入

1

如果您閱讀了SAX處理http://en.wikipedia.org/wiki/Simple_API_for_XML和HTTP塊編碼http://en.wikipedia.org/wiki/Chunked_transfer_encoding,您會發現解析XML文檔應該是可行的而它正在發送。

+0

不是一個壞主意,但我想知道它有多普遍。雖然Simple API for XML是數據處理的方式,但您仍然需要發送部分來處理整個數據塊,你會不會?但是,無論如何感謝指針 – Sandman

+0

SAX似乎只是Java,哪種排除了...... – Sandman

+0

@Sandman我希望大多數Http客戶端庫能自動爲你處理分塊。那些在微軟平臺上的。 –