2015-11-19 68 views
0

我有一個相當概念化的問題,關於處理大量數據的API。Php - Symfony2 - Rest API - 巨大的數據

我有兩個web應用程序運行:

  • 系統A,其作用就像一個源
  • 系統B,其爲在目標系統

兩者都使用的RESTful API與每個通信其他。

現在它涉及到從發送的數據(大約1萬行)的鉅額B.

我的概念是選擇數據庫中的所有數據,並創建即一個主陣100萬子陣。通過主陣列下一步迭代讓每一個單列,並將其發送特定行的請求後到系統B.

代碼示例:

$data = $sql-to-get-all-data; 
$mainArray = $data->fetchAll(); 

foreach ($mainArray as $subArray) { 

    $row = $subArray; 

    // create post request and send $row to System B 

} 

接下來,我需要檢查,如果該行已經存在在系統B中。如果是,請發送更新請求,而不是發佈後請求。 也...如果它存在於系統B,但在系統A不存在一排,應該從系統A.刪除

我的問題是:

這是在正確的方式去? 我應該考慮像並行處理/多線程這樣的概念嗎?

回答

1

你應該在你的db查詢中使用offset和limit。將整個數據集存儲在PHP數組中是一個非常糟糕的主意。

您可以批量發送子集並在響應中返回ID列表(添加/更新/刪除)。

+0

感謝您的回答,第一:如何使用偏移量和限制,我如何獲得所有數據?第二:我不明白如何從系統B刪除行,如果他們不存在系統A? –

+1

第一個: 您必須指定您的限制,並在循環中執行查詢。 第一個用於偏移0和極限,下一個用於偏移0 +限制+ 1和限制等 第二:您可以執行刪除查詢,其中id不在您的id列表中。 向我們提供有關您業務邏輯的更多信息總是很棒的。也許我們可以簡化你的問題。 –