LMLPHP后院

代码分享解决Laravel中MySQL WhereIn之too many placeholders技术

maybe yes 发表于 2015-11-30 13:11

MySQL 执行的时候 WhereIn 太多的 ID 参数,导致 PDO 报错。解决方法,分批量执行,然后将结果合并。

下面以 range 函数做了一个简单的例子,计算 1 到 100 的加法。


public function cu(){
    $arr = range(1, 100);
    $cl = function ($part_ids) {
        return array_sum($part_ids);
    };
    $re = $this->portionExecute($cl, $arr);
    var_dump($re);
    $re = $this->portionExecute($cl, $arr, 10);
    var_dump($re);
}

public function portionExecute($closureJob, $dataArr, $portion_count = 1000){
    $result = [];
    if(count($dataArr) > $portion_count) {
        for ($i = 0, $c = ceil(count($dataArr)/$portion_count); $i < $c; $i++){
            $part_ids = array_slice($dataArr, $i*$portion_count, $portion_count);
            $result[] = $closureJob($part_ids);
        }
    } else {
        $result = $closureJob($dataArr);
    }
    return $result;
}

相关文章
2024-04-25 00:32:18 1713976338 0.007316