Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos,
Tenho um banco de dados chamado Alibdbs1.gdb (é um banco de dados de uma biblioteca) com o Firebase (WI-VI1.0.3.972). Tenho acessado este banco de dados por um software feito em java (jsp), via intranet, em 2003. Agora estou pensando em atualizar o sistema para PHP.
O problema é que, tanto no JAVA quanto no PHP, o banco demora muito para responder a requisição do browser, cerca de 10 à 12 segundos!!! É muito tempo.
Há alguma configuração que eu possa fazer ou upgrade necessário à ser realizado para que este problema possa ser corrigido???
O modo de conexão que estou utilizando em PHP é a seguinte:
// Dados da conexão com banco de dados
$conn=ibase_connect("localhost:c:\\arches lib\\db\\alibdbs1.gdb","SYSDBA","masterkey");
if ($conn) {
echo "Acesso Concedido!";
}
?>
<select name="autor" id="autor">
<option value="0">SELECIONE UM AUTOR</option>
<?
$SQLNome="Select cod_autor, nome, sobrenome from dautor where sobrenome is not null order by sobrenome";
$iSQLN=ibase_query($conn,$SQLNome);
while ($iSQL=ibase_fetch_object($iSQLN)) {
?>
<option value=<?=$iSQL("cod_autor");?>><? echo $iSQL("nome"); ?>
</option>
<? } ?>
</select>
--------------------------------------------------------------------------------------------------------------
Observação: nesta linha: <option value=<?=$iSQL("cod_autor");?>><? echo $iSQL("nome"); ?>
aparece o seguinte erro: Fatal error: Function name must be a string
O que vem a ser isso? Não sou acostumado a trabalhar com firebase/interbase...
Obrigado,
Diogo.
Ok, desculpa aí.
... mas alguém que entende um pouco mais que eu poderia me auxiliar, por favor.
Desde já obrigado
$iSQL é uma variável que recebeu um objeto.. não faz sentido os ()
tente assim:
<option value="<?php echo $iSQL->cod_autor; ?>"><?php echo $iSQL->cod_autor; ?></option>Vou postar o código como está rodando agora:
$conn=ibase_connect("ORION:c:\\arches lib\\db\\alibdbs1.gdb","SYSDBA","masterkey");
if ($conn) {
echo "Acesso Concedido!";
}
echo $SQLNome="Select cod_autor, nome, sobrenome from dautor where sobrenome is not null order by sobrenome";
$iSQLN=ibase_query($SQLNome);
$count=0;
while($iSQL=ibase_fetch_object($iSQLN))
{
if ($count < 100) {
echo $iSQL->cod_autor;
$count=$count+1;
}
}
?>
Mas está dando este erro:
Notice: Undefined property: stdClass::$cod_autor in C:\Inetpub\wwwroot\biblio\teste.php on line 19 ( echo $iSQL->cod_autor; )
O que ocorre aqui meus amigos?? não tenho ideia de como arrumar isso.
Valeu.
Dá um var_dump na $iSQL dentro do while pra ver o que está vindo.
Carlos Eduardo
Caro Matias, obrigado pela atenção.
Eu apliquei um var_dump na variável $iSQL, lá dentro do while.
Vamos primeiro ao código e depois à mensagem.
O código ficou assim:
------------------------------------------------------------
$SQLNome="Select cod_autor, nome, sobrenome from dautor where sobrenome is not null order by sobrenome";
$iSQLN=ibase_query($SQLNome);
$count=0;
while($iSQL=ibase_fetch_object($iSQLN))
{
if ($count < 10) {
var_dump($iSQL); // <<----- VAR_DUMP
$count=$count+1;
}
}
?>
-----------------------------------------------------------------
Mensagem:
object(stdClass)#1 (3) { ["COD_AUTOR"]=> float(939) ["NOME"]=> string(8) "Vittorio" ["SOBRENOME"]=> string(5) "'''''" } object(stdClass)#2 (3) { ["COD_AUTOR"]=> float(2046) ["NOME"]=> string(12) "Edson Vieira" ["SOBRENOME"]=> string(6) "Abdala" } object(stdClass)#1 (3) { ["COD_AUTOR"]=> float(1518) ["NOME"]=> string(6) "Manuel" ["SOBRENOME"]=> string(15) "Abellán Velasco" } object(stdClass)#2 (3) { ["COD_AUTOR"]=> float(2606) ["NOME"]=> string(13) "Dióres Santos" ["SOBRENOME"]=> string(5) "Abreu" } object(stdClass)#1 (3) { ["COD_AUTOR"]=> float(1343) ["NOME"]=> string(4) "José" ["SOBRENOME"]=> string(11) "Abreu Filho" } object(stdClass)#2 (3) { ["COD_AUTOR"]=> float(661) ["NOME"]=> string(15) "Carlos Henrique" ["SOBRENOME"]=> string(5) "Abrão" } object(stdClass)#1 (3) { ["COD_AUTOR"]=> float(1994) ["NOME"]=> string(6) "Nelson" ["SOBRENOME"]=> string(5) "Abrão" } object(stdClass)#2 (3) { ["COD_AUTOR"]=> float(2772) ["NOME"]=> string(12) "Cláudia José" ["SOBRENOME"]=> string(4) "Abud" } object(stdClass)#1 (3) { ["COD_AUTOR"]=> float(1088) ["NOME"]=> string(16) "Rosemary Costhek" ["SOBRENOME"]=> string(6) "Abílio" } object(stdClass)#2 (3) { ["COD_AUTOR"]=> float(2086) ["NOME"]=> string(8) "Riccardo" ["SOBRENOME"]=> string(6) "Acciai" }
O PHP é case sensitive. cod_autor é diferente de COD_AUTOR. Veja que os nomes dos campos estão em caixa alta. Troque isto que deve funcionar.
Carlos Eduardo
Nossa Matias, pura falta de atenção minha....
era isso mesmo...
Quanto à lentidão do firebase, você teria alguma informação do porquê acontece isso? Eu aciono esse simples código e o browser demora cerca de 10 à 15 segundos para responder.... O mesmo sistema roda em java, jsp, (estou reescrevendo em php agora) e também acontece o mesmo problema de lentidão na resposta.
Obrigado!!!
Diogo.
Evite postar tópicos duplicados pelo fórum