20k记录来自数据库选择查询,然后在foreach循环中挂起

时间:2018-04-25 10:57:22

标签: cakephp

我面临的一个问题是,我必须从具有特定条件的数据库中选择一条记录(其中status = 0),之后如果大约20k行来自select查询,那么我添加了foreach循环以应用一些条件并且condition true我将每个获取的行的状态从0更新为1,将1更新为2,依此类推......

我的问题是当大量数据来自数据库时,此过程将挂起并且服务已停止。

请指导我在foreach的地方还能做些什么... if..else等...

1 个答案:

答案 0 :(得分:0)

Use hash insted of foreach

// Common Usage:
$users = [
    ['id' => 1, 'name' => 'mark'],
    ['id' => 2, 'name' => 'jane'],
    ['id' => 3, 'name' => 'sally'],
    ['id' => 4, 'name' => 'jose'],
];
$results = Hash::extract($users, '{n}.id');
// $results equals:
// [1,2,3,4];