PHP项目如何实现快速的批量数据处理?

已邀请:

zkbhj - 凯冰科技站长

赞同来自:

如果使用的是Yii框架,处理数据库中的批量数据,可以通过脚本中传入参数,用取模的方式批量处理数据:
/usr/local/php/bin/php yii module-name/controller-name/action-name 10 1
其中第一个参数10代表你要分多少组,第二个参数1标识当前分组要处理数据的模。
$allNode = ArrayHelper::getValue(yii::$app->request->params, 1);
$currentNode = ArrayHelper::getValue(yii::$app->request->params, 2);
然后你就可以用这个来批量处理数据了
$listSql = 'select * from table_name where MOD(id, :all_node) =:currentNode AND create_time <=:limit_time limit 1000';
$list = Yii::$app->db->createCommand($listSql)
->bindValue(':limit_time', self::LIMIT_TIME)
->bindValue(':all_node', $allNode)
->bindValue(':currentNode', $currentNode)
->queryAll();
这样你就可以在不同的应用机器上来执行不同参数的分组脚本,来达到“批量同时”处理数据的目的。
当然,如果在同一台机器上,也可以同时执行脚本命令,可以用 && 符号连接两个命令,这样第一个命令处理完成之后,可以顺序处理第二个、第三个…… 命令。数据量较小时,可以这么处理。数据量较大时,还是建议配置成计划任务来执行效率会高一些。
 

要回复问题请先登录注册