[firebase-br] Dúvida sobre controle transacional em PHP
Rodrigo A. de Freitas
rodrigo em solucoeseinformatica.com.br
Qui Dez 11 15:39:50 -03 2008
Olá amigos,
Eu estou com um problema: eu tenho em um cliente, um sistema escrito em PHP
feito por um terceiro, que acessa nossa base de dados; este sistema entrou
em produção há poucos dias. Curiosamente, o meu sistema, que estava rodando
normalmente há meses, começou a apresentar um deadlock atrás do outro, em
tabelas cujos registros são compartilhadas pela aplicação web.
Olhando a aplicação em PHP (antes de mais nada, devo dizer que sou
totalmente leigo na linguagem), vi que em nenhum momento é aberta uma
transação para os SELECT no banco; e em todas as funções que modificam
registros na base de dados, a chamada da função ibase_trans não tem os
parâmetros da transação, sendo executada da seguinte forma:
$trans=ibase_trans(IBASE_DEFAULT, $db);
Procurando no google, encontrei uma página que dizia que uma query contendo
um SELECT utiliza a transação padrão da conexão, e que a chamada da função
acima definirá os parâmetros da transação padrão com os mesmos parâmetros
chamados por ela. É verdade esta afirmação ?
Em sendo, como faço para definir uma transação específica para os selects,
como isolamento do tipo snapshot, somente para leitura ?
Abraços,
Rodrigo A. de Freitas
Análise & Desenvolvimento
Soluções & Informática
Mais detalhes sobre a lista de discussão lista