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

我想使用某些条件从三个表中检索数据,然后在另外三个表中插入/更新。这是一个非常简单的过程,其脚本是用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;

    }


慕后森
浏览 142回答 1
1回答

有只小跳蛙

您可以增加 PHP 设置中的超时时间。ini_set('max_execution_time','{number&nbsp;of&nbsp;seconds}');然后您可能还必须增加内存限制。ini_set('memory_limit',&nbsp;'2GB');但是最好把大数据逻辑留给数据库。所以如果我是你,我会编写一个存储过程/函数并使用 PHP only exec 执行它
打开App,查看更多内容
随时随地看视频慕课网APP