Pregunta

Me estoy topando con lo que me parece un error en la extensión de PHP de la base de datos de Advantage (lo sé, lo sé ...). Lo he reportado como un error, pero aún no he escuchado nada, así que pensé que lo había hecho con ustedes.

Código de trabajo:

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

Esto simplemente pasa por 100 veces, se conecta a la base de datos, ejecuta una consulta y se desconecta.

Código que no funciona:

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

¿Nota la segunda ejecución de la consulta? Este bucle falla en el ciclo 51 (el servidor de base de datos limita cada aplicación a 50 conexiones simultáneas) con el error

  

Error 6303: Máxima ventaja   Se excedieron las conexiones del servidor de base de datos.

He intentado varias otras cosas, incluyendo esto sin éxito:

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

Esto, sin embargo, soluciona el problema, y ??¡¡AMBAS consultas aún se ejecutan con éxito y con precisión !!

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

Todo esto me parece muy extraño ... ¿alguna idea?

EDITAR: Estoy en PHP 5.2.5 y ADS 8.1

¿Fue útil?

Solución

La base de conocimientos tiene este elemento en el error 6303 y cómo aumentar el número de conexiones posibles desde un cliente, http://devzone.advantagedatabase.com/dz/content.aspx?Key=17&RefNo=981124-0621 . R & amp; D actualmente está investigando este problema y está trabajando para resolverlo en la próxima versión de servicio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top