使用PHP和MYSql处理大量数据库数据,获得不超时的结果

使用PHP和MYSql处理大量数据库数据,获得不超时的结果,php,mysql,Php,Mysql,我有一个页面,从JSON文件中读取订单信息,然后将更改和更新写入数据库 这是我的基本代码 //variables and arrays set up from JSON file $a_ds = array(); $a_vs = array(); $ad_ds = array(); $ad_vs = array(); $am_ds = array(); $am_vs = array(); $key = $lines['ORDER_NUMBER'].

我有一个页面,从JSON文件中读取订单信息,然后将更改和更新写入数据库

这是我的基本代码

//variables and arrays set up from JSON file
$a_ds = array();
    $a_vs = array();
    $ad_ds = array();
    $ad_vs = array();
    $am_ds = array();
    $am_vs = array();
    $key = $lines['ORDER_NUMBER'].$lines['LINE_NUMBER'];

    // TABLE ARTICLE
    $a_ds[] = 'CUSTOMER_NUMBER'; $a_vs[] = "'".$lines['CUSTOMER_NUMBER']."'";
    $a_ds[] = 'ORDER_NUMBER'; $a_vs[] = "'".$lines['ORDER_NUMBER']."'";
    $a_ds[] = 'TYPE'; $a_vs[] = "'".$lines['TYPE']."'";
    $a_ds[] = 'LINE_NUMBER'; $a_vs[] = "'".$lines['LINE_NUMBER']."'";
    $a_ds[] = 'REFERENCE_TEXT'; $a_vs[] = "'".$lines['REFERENCE_TEXT']."'";
    $a_ds[] = 'ARTICLE_NUMBER'; $a_vs[] = "'".$lines['ARTICLE_NUMBER']."'";
    $a_ds[] = 'ORDER_DATE'; $a_vs[] = "'".$lines['ORDER_DATE']."'";
    $a_ds[] = 'QUANTITY'; $a_vs[] = "'".$lines['QUANTITY']."'";
    $a_ds[] = 'PRICE'; $a_vs[] = "'".$lines['PRICE']."'";
    $a_ds[] = 'ORDER_STATUS'; $a_vs[] = "'".$lines['ORDER_STATUS']."'";


    $table_name = 'ORDER_STATUS';


//check to see if order number exists

    $checkQuery = "SELECT ORDER_NUMBER FROM order_status WHERE ORDER_NUMBER = '".$lines['ORDER_NUMBER']."'";

    $checkResult = mysql_query($checkQuery) or error($checkQuery."\n".mysql_error());



    //perform update or insert depending on existance
    if (mysql_fetch_row($checkResult)) {
        $querys[] = "update ".$table_name." set ".join(', ', $a_s)." where concat(ORDER_NUMBER, LINE_NUMBER) = '".$key."'";
    } else {
        $querys[] = "insert into ".$table_name." (".join(', ', $a_ds).") values(".join(', ', $a_vs).")";
    }
}

//run queries
    if (true) {
    if ($querys) {
        foreach ($querys as $query) {
            $result = mysql_query($query) or error($query."\n".mysql_error());
        }
    }
} else {
    if ($querys) {
        echo join(";\n", $querys);
        die();
    }
如果我只是回显sql查询,这一切似乎都很好。问题是如果我尝试并实际执行查询

JSON文件返回了将近35000个单独的订单,数据库中有32000行单独的订单

我知道一定有更好的方法,但我的PHP和SQL知识非常有限

我曾尝试将所有订单号放入一个PHP数组,并使用in_数组,但效果相同,只是页面超时


任何帮助都将不胜感激:
mysql\u*
扩展基本上已经过时。我建议您使用PHP CLI或CRON作为终端作业来完成此操作,这样就不用担心超时了。您可以将此操作简化为一次
插入。。。在重复密钥更新时
键入查询。或添加
ini\u集('max\u execution\u time',1000)到脚本的顶部。除非您的托管公司已阻止此语句CD001,否则我不确定此操作是否有效,因为订单中的每个单独项目在我尝试更新的表中都有一行,因此会有大量重复的行。表中有一个行号字段,每个订单号的每个条目都会自动递增