Вопрос

Я столкнулся с ошибкой в ​​PHP-расширении базы данных 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_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:Соединения сервера базы данных максимального преимущества превышены.

Я пробовал несколько других вещей, включая это, но безуспешно:

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.

Это было полезно?

Решение

В базе знаний есть этот пункт по ошибке 6303 и как увеличить количество возможных подключений от клиента, http://devzone.advantagedatabase.com/dz/content.aspx?Key=17&RefNo=981124-0621.В настоящее время отдел исследований и разработок изучает эту проблему и работает над ее решением в следующем выпуске службы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top