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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top