É este um bug com Advantage Database?
-
03-07-2019 - |
Pergunta
Eu estou correndo no que me parece ser um bug no Advantage Database PHP Extension (Eu sei, eu sei ...). Eu informou-o como um bug, mas ainda não ouvi nada de volta, então eu pensei que eu iria executá-lo por vocês.
Código de Trabalho:
for ($i = 0; $i < 100; $i++)
{
$connection = ads_connect( 'DataDirectory=\\some\path\;ServerTypes=2;RightsChecking=Off;TrimTrailingSpaces=true;CommType=TCP_IP;', '', '' );
$results = ads_do( $connection , 'SELECT TOP 1 * FROM projects');
ads_close( $connection );
}
Isso só percorre 100 vezes, conecta-se a db, executa uma consulta, e desconecta.
NÃO Trabalho cupom:
for ($i = 0; $i < 100; $i++)
{
$connection = ads_connect( 'DataDirectory=\\some\path\;ServerTypes=2;RightsChecking=Off;TrimTrailingSpaces=true;CommType=TCP_IP;', '', '' );
$results = ads_do( $connection , 'SELECT TOP 1 * FROM projects');
$results = ads_do( $connection , 'SELECT TOP 1 * FROM projects');
ads_close( $connection );
}
Observe a segunda execução da consulta? Este circuito falhar no ciclo 51 (o servidor db limita cada aplicação de 50 ligações simultâneas) com o erro
Erro 6303: Vantagem máxima conexões de banco de dados do servidor excedido.
Eu tentei várias outras coisas, incluindo este, sem sucesso:
for ($i = 0; $i < 100; $i++)
{
$connection = ads_connect( 'DataDirectory=\\some\path\;ServerTypes=2;RightsChecking=Off;TrimTrailingSpaces=true;CommType=TCP_IP;', '', '' );
$results = ads_do( $connection , 'SELECT TOP 1 * FROM projects');
ads_free_result( $results );
$results = ads_do( $connection , 'SELECT TOP 1 * FROM projects');
ads_free_result( $results );
ads_close( $connection );
}
Isso, no entanto, O corrigir o problema, e ambas as consultas ainda executar com sucesso e precisão !!
for ($i = 0; $i < 100; $i++)
{
$connection = ads_connect( 'DataDirectory=\\some\path\;ServerTypes=2;RightsChecking=Off;TrimTrailingSpaces=true;CommType=TCP_IP;', '', '' );
$results = ads_do( $connection , 'SELECT TOP 1 * FROM projects');
ads_close( $connection );
$results = ads_do( $connection , 'SELECT TOP 1 * FROM projects');
ads_close( $connection );
}
Isso tudo parece muito estranho para mim ... alguma idéia?
EDIT: eu estou no PHP 5.2.5 e ADS 8.1
Solução
A base de conhecimento tem este item sobre o erro 6303 e como aumentar o número de conexões possíveis de um cliente, http://devzone.advantagedatabase.com/dz/content.aspx?Key=17&RefNo=981124-0621 . R & D está a analisar este problema e trabalhando para tê-lo resolvido na próxima versão do serviço.