Domanda

Sto incontrando quello che mi sembra essere un bug nell'estensione PHP di Advantage Database (lo so, lo so ...). L'ho segnalato come un bug, ma non ho ancora ricevuto risposta, quindi ho pensato di eseguirlo da voi ragazzi.

Codice di lavoro:

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 );
}

Questo scorre solo 100 volte, si collega al db, esegue una query e si disconnette.

Codice NON funzionante:

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 );
}

Notare l'esecuzione della seconda query? Questo ciclo fallisce nel 51 ° ciclo (il server db limita ogni applicazione a 50 connessioni simultanee) con l'errore

  

Errore 6303: Vantaggio massimo   Superate le connessioni al server database.

Ho provato diverse altre cose tra cui questa senza successo:

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 );
}

Questo, tuttavia, FA risolve il problema e ENTRAMBE le query vengono comunque eseguite correttamente e con precisione !!

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 );   
}

Tutto questo mi sembra molto strano ... qualche idea?

EDIT: sono su PHP 5.2.5 e ADS 8.1

È stato utile?

Soluzione

La knowledge base contiene questo elemento sull'errore 6303 e su come aumentare il numero di connessioni possibili da un client, http://devzone.advantagedatabase.com/dz/content.aspx?Key=17&RefNo=981124-0621 . R & amp; D sta attualmente esaminando questo problema e sta lavorando per risolverlo nella prossima versione del servizio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top