为了账号安全,请及时绑定邮箱和手机立即绑定

从一个表中检索数据并在mysql的另一个表中插入/更新

从一个表中检索数据并在mysql的另一个表中插入/更新

PHP
慕后森 2022-07-16 16:41:13
我想使用某些条件从三个表中检索数据,然后在另外三个表中插入/更新。这是一个非常简单的过程,其脚本是用php开发的。但问题是从每个表中检索到的记录是 100k+。PHP 脚本仅在少量记录的情况下运行,并对大数据给出超时错误。谁能建议如何解决这个问题。所有三个表数据都需要在运行时获取。下面是我的 php 脚本,它给出了超时错误switch($action){    case 'tequipebudget':         $oldPresta              =  budPrestaDataTransfer::getOldPresta('tequipebudget');         $budProviderBudget      =  budPrestaDataTransfer::updatebudProviderBudget($oldPresta, 'budproviderbudget', 3);     break;    case 'tequipebudgetjum':         $oldPrestaJum           =  budPrestaDataTransfer::getOldPresta('tequipebudgetjum');         $budProviderBudgetJum   =  budPrestaDataTransfer::updatebudProviderBudget($oldPrestaJum, 'budproviderbudgetjum', 3);     break;    case 'tequipebudgetavhisto':        $oldPrestaAvHisto           =  budPrestaDataTransfer::getOldPresta('tequipebudgetavhisto');         $budProviderBudgetAvHisto   =  budPrestaDataTransfer::updatebudProviderBudget($oldPrestaAvHisto, 'budproviderbudgetavhisto', 3);     break;}static public function getOldPresta($table) {        $sql        = "SELECT Annee, CodeEntite, CodeProjet,  MtBudgetAEquipeKE, projet_id";          if($table == 'tequipebudgetavhisto') {            $sql    .= " ,avenant_id ";        }        $sql        .= " FROM ".$table." WHERE Annee < 2020 ";        $dbObj              =  budPDO::getInstance();        $prestaList = $dbObj->getAllResults($sql);        return $prestaList;    }
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

您可以增加 PHP 设置中的超时时间。

ini_set('max_execution_time','{number of seconds}');

然后您可能还必须增加内存限制。

ini_set('memory_limit', '2GB');

但是最好把大数据逻辑留给数据库。所以如果我是你,我会编写一个存储过程/函数并使用 PHP only exec 执行它


查看完整回答
反对 回复 2022-07-16
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信