請求次數:1300次
執行時間:200*60=12000S
// 要分批保存數據,可以將 `$all_data` 數組拆分成多個小數組,並逐一調用 `saveAll` 方法。以下是一個示例,演示如何將數據分批爲每批100條進行保存:
$dataModel = new cxVipUserStudyInfo();
$batchSize = 100;
$offset = 0;
foreach ($jsonData as &$value) {
// ... 檢查參數和處理數據 ...
$all_data[] = $value;
}
$totalDataCount = count($all_data);
for ($i = 0; $i < $totalDataCount; $i += $batchSize) {
$batchData = array_slice($all_data, $i, $batchSize);
try {
$result = $dataModel->saveAll($batchData);
unset($batchData);
} catch (\Throwable $th) {
mylog('請求失敗:', $th, 'saveStuStudyDataInfo_error', 'chaoxue');
return $this->jsonCode($th, 1);
}
}
在這個示例中:
- 設置一個
$batchSize
變量,表示每批數據的數量(這裏設置爲100)。 - 使用
for
循環遍歷$all_data
數組,每次迭代的步長爲$batchSize
。 - 在每次循環中,使用
array_slice
函數獲取當前批次的數據子集$batchData
。 - 嘗試將
$batchData
中的數據保存到數據庫中。如果發生異常,捕獲並處理錯誤。 - 繼續下一次循環,直到處理完所有數據。
通過這種方式,可以控制每次保存的數據量,從而降低內存和數據庫資源的使用。
請注意,需要根據實際環境和需求調整 $batchSize
的值,以找到最佳的性能平衡點。
歡迎關注公-衆-號【TaonyDaily】、留言、評論,一起學習。
Don’t reinvent the wheel, library code is there to help.
文章來源:劉俊濤的博客
若有幫助到您,歡迎點贊、轉發、支持,您的支持是對我堅持最好的肯定(_)