请求次数: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.
文章来源:刘俊涛的博客
若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)
标签:数据,batchData,batchSize,内存,th,100,PHP,data,占用 From: https://www.cnblogs.com/lovebing/p/17932534.html