Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebird ibase_trans()非常慢的PHP_Php_Apache_Transactions_Firebird - Fatal编程技术网

Firebird ibase_trans()非常慢的PHP

Firebird ibase_trans()非常慢的PHP,php,apache,transactions,firebird,Php,Apache,Transactions,Firebird,当我使用ibase_trans()时,脚本启动无限循环,不响应 我正在请求nusoap网络服务。 如果我只是打印nusoap数据,脚本执行时间是3秒,在我取消对启动事务的行的注释后,它将启动无限循环 $dbh1 = ibase_connect(DB_HOST1, DB_USER1, DB_PASS1) or die('die message'); $tr1 = ibase_trans($dbh1); 在nusoap数据循环之后,我有以下几行: $query3 = ibase_que

当我使用ibase_trans()时,脚本启动无限循环,不响应

我正在请求nusoap网络服务。 如果我只是打印nusoap数据,脚本执行时间是3秒,在我取消对启动事务的行的注释后,它将启动无限循环

$dbh1 = ibase_connect(DB_HOST1, DB_USER1, DB_PASS1) or die('die message');
$tr1  = ibase_trans($dbh1);
在nusoap数据循环之后,我有以下几行:

$query3    =   ibase_query($tr1,"INSERT INTO EXECUTAR ( FLAG ) VALUES ( 2 )") or die('teste');
问题从这里开始

My php version : 5.6
Xampp version: 3.2.1
Firebird: 2.5
完整代码:

 if ($client->fault) {
    echo "<h2>Fault</h2><pre>";
    print_r($result);
    echo "</pre>";
} else {
    $error = $client->getError();
    if ($error) {
        echo "<h2>Error.</h2><pre>" . $error . "</pre>";
    } else {

$dbh1 = ibase_connect(DB_HOST1, DB_USER1, DB_PASS1) or die('die message');
            $tr1 = ibase_trans($dbh1);

            $TotalProdutos = 0; 
            foreach($result['ConsultaEstoqueProdutosResult']['diffgram']['NewDataSet']['Estoques'] as $produto){
                $TotalProdutos++;
                $query1    =   ibase_query($tr1,"INSERT INTO ATUALIZA_PRE ( CODIGO,
                                                                                ESTOQUE,
                                                                                ATIVO,
                                                                                DISPONIVEL,
                                                                                ESTOQUEDISPONIVEL,
                                                                                PRECOSEMST,
                                                                                PRECOREVENDA )
                                                                            VALUES ( 
                                                                                '{$produto['CODIGO']}',
                                                                                '{$produto['ESTOQUE']}',
                                                                                {$produto['ATIVO']},
                                                                                {$produto['DISPONIVEL']},
                                                                                {$produto['ESTOQUEDISPONIVEL']},
                                                                                {$produto['PRECOSEMST']},
                                                                                '".$produto['PRECOREVENDA']."')")or die('teste1');

            }


            $dbh1         = ibase_connect(DB_HOST1, DB_USER1, DB_PASS1) or die('die message');
            $tr1        = ibase_trans($dbh1);
            $query3     =   ibase_query($tr1,"INSERT INTO EXECUTAR ( FLAG ) VALUES ( 2 )") or die('teste');
            ibase_commit($tr1);
            ibase_close($dbh1); 
    }
}
if($client->fault){
呼应“断层”;
打印(结果);
回声“;
}否则{
$error=$client->getError();
如果($error){
回显“错误”。$Error.“;
}否则{
$dbh1=ibase_connect(DB_HOST1、DB_USER1、DB_PASS1)或die('die message');
$tr1=ibase_trans($dbh1);
$TotalProdutos=0;
foreach($result['consultateastoqueprodutsresult']['diffgram']['NewDataSet']['Estoques']作为$produto){
$TotalProdutos++;
$query1=ibase_查询($tr1,“插入到ATUALIZA_前(CODIGO),
爱沙尼亚,
阿维奥,
DISPONIVEL,
ESTOQUEDISPONIVEL,
预组装,
预护卫)
价值(
“{$produto['CODIGO']}”,
“{$produto['ESTOQUE']}”,
{$produto['ATIVO']},
{$produto['DISPONIVEL']},
{$produto['ESTOQUEDISPONIVEL']},
{$produto['PRESEMST']},
“$produto['precorvenda'].”))或die('teste1');
}
$dbh1=ibase_connect(DB_HOST1、DB_USER1、DB_PASS1)或die('die message');
$tr1=ibase_trans($dbh1);
$query3=ibase_query($tr1,“插入到执行器(标志)值(2)”中)或die('teste');
ibase_commit(1美元);
ibase_close(dbh1美元);
}
}

有人能帮帮我吗?

没有Firebird 2.4这样的东西,你用的是2.1还是2.5?你能不能也包括你的全部代码,因为我不明白你说的“在nusoap数据循环之后”是什么意思;这就是进入无限循环的原因吗?我已经更新了主题。问题可能是您在循环后忘记提交事务:您创建了一个新事务,但没有提交第一个事务。您还不必要地创建了一个新连接。除此之外,您应该真正使用参数化查询。目前,您对SQL注入持开放态度。然而,我没有看到任何可以解释无限循环的东西(不过,我对PHP也不太了解)。使用ibase_查询($dbh1,……和ibase_提交($dbh1)。