代码之家  ›  专栏  ›  技术社区  ›  KOGI

这是Advantage数据库的错误吗?

  •  1
  • KOGI  · 技术社区  · 15 年前

    在我看来,我遇到了Advantage数据库PHP扩展中的一个bug(我知道,我知道…)。我已经把它报告成了一个bug,但仍然没有听到任何消息,所以我想我会由你们来运行它。

    工作代码:

    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个周期(DB服务器将每个应用程序限制为50个同时连接)失败,并出现错误

    错误6303:最大优势 超过了数据库服务器连接。

    我还尝试过其他几件事,包括这件事,但都没有成功:

    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

    1 回复  |  直到 15 年前
        1
  •  4
  •   LanceSc    15 年前

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

    推荐文章