1

我遇到了在我看来是 Advantage Database PHP Extension 中的一个错误(我知道,我知道......)。我已经将它报告为一个错误,但仍然没有收到任何回复,所以我想我会由你们来运行它。

工作代码:

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

这只是循环 100 次,连接到数据库,执行查询,然后断开连接。

非工作代码:

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

注意到第二个查询执行了吗?此循环在第 51 个周期失败(数据库服务器将每个应用程序限制为 50 个同时连接)并出现错误

错误 6303:超出最大 Advantage 数据库服务器连接数。

我尝试了其他几件事,包括没有成功:

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

但是,这确实解决了问题,并且两个查询仍然成功且准确地执行!

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

这一切对我来说似乎很奇怪......有什么想法吗?

编辑:我在 PHP 5.2.5 和 ADS 8.1

4

1 回答 1

4

知识库中有关于 6303 错误以及如何增加可能来自客户端的连接数的项目,http: //devzone.advantagedatabase.com/dz/content.aspx?Key=17&RefNo=981124-0621 。R&D 目前正在研究这个问题,并努力在下一个服务版本中解决它。

于 2009-05-04T22:18:29.260 回答