PHP脚本在服务器上很慢,但在本地速度很快

时间:2013-06-22 16:11:39

标签: php performance local host

首先,我想说我的英语很差,但我会尝试。

我已经尝试在我的电脑上使用wamp服务器运行PHP脚本并且工作正常,但是当我上传时,由于某种原因,它花费了很多时间来完成主机上的执行,并且几乎总是以服务暂时不可用错误(主机关闭连接)。

我已经使用了一些die()来查看问题所在,我发现它是一个for循环,我正在创建一个大字符串(我只是连接在一起,以便在循环后执行一个大的INSERT) 。这个循环在本地工作......我不明白为什么不在主机上工作。

//insertar valores en bbdd
$sql = "Insert into valor values ";
$primer = 1;

$tiempo_inicio = microtime(true);

for($i = 0 ; $i <= count($array2) - 1 ; $i++)
{   

    //insertar glucosa
    if(!$array2[$i][1] == "")
    {
        if (!$primer) $sql .= ", "; 
        else $primer = 0;

        $sql .= "('" . $this->paciente . "', '" . $array2[$i][0] . "', 'Glucosa', " . $array2[$i][1] . ")";

        $this->Comprobar_Aumentar_Avisos($array2[$i][0], $array2[$i][1]);
    }

    //insertar raciones
    if(!$array2[$i][2] == "")
    {
        if (!$primer) $sql .= ", "; 
        else $primer = 0;

        $sql .= "('" . $this->paciente . "', '" . $array2[$i][0] . "', 'Raciones', " . $array2[$i][2] . ")";

    }

    //insertar insulina
    if(!$array2[$i][3] == "")
    {
        if (!$primer) $sql .= ", "; 
        else $primer = 0;

        $sql .= "('" . $this->paciente . "', '" . $array2[$i][0] . "', 'Insulina', " . $array2[$i][3] . ")";    
    }
}

$tiempo_total = microtime(true) - $tiempo_inicio;

die($tiempo_total);


if ($sql != "Insert into valor values ") {
    $AccessBD = new TAccessBD;
    $AccessBD->usuario = $this->paciente;
    $AccessBD->Inicialitzar_BD();
    $AccessBD->query = $sql;
    $res = $AccessBD->Ejecutar_SQL();   
    $AccessBD->Finalitzar_BD();
    unset($AccessBD);
}

1 个答案:

答案 0 :(得分:1)

问题是在循环中我在这个函数中访问了数据库太多次了:$this->Comprobar_Aumentar_Avisos($array2[$i][0], $array2[$i][1]);

在本地访问我没有问题,因为本地数据库,但在服务器上,与其他外部主机中的数据库一样,它非常慢。

所以我解决了这个问题,减少了对数据库的访问次数,我现在可以正常工作了。现在它工作正常。

非常感谢您的帮助!