Question

Je rencontre un bogue dans l'extension PHP Advantage Database (je sais, je sais ...). Je l'ai signalé comme un bug, mais je n'ai toujours rien entendu en retour, alors je pensais que je le ferais courir par vous.

Code de travail:

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

Cela permet de parcourir 100 fois, de vous connecter à la base de données, d'exécuter une requête et de vous déconnecter.

Code en panne:

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

Notez la deuxième exécution de la requête? Cette boucle échoue au 51ème cycle (le serveur de base de données limite chaque application à 50 connexions simultanées) avec l'erreur

.
  

Erreur 6303: avantage maximal   Nombre de connexions au serveur de base de données dépassé.

J'ai essayé plusieurs autres choses, y compris sans succès:

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

Ceci, cependant, CORRIGE de résoudre le problème et les DEUX requêtes s'exécutent toujours avec succès et avec précision!

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

Tout cela me semble très étrange… des idées?

MODIFIER: je suis sur PHP 5.2.5 et ADS 8.1

Était-ce utile?

La solution

La base de connaissances contient cet élément sur l'erreur 6303 et explique comment augmenter le nombre de connexions possibles à partir d'un client, http://devzone.advantagedatabase.com/dz/content.aspx?Key=17&RefNo=981124-0621 . R & D étudie actuellement ce problème et tente de le résoudre dans la prochaine version de service.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top