Я сталкиваюсь с тем, что мне кажется ошибкой в расширении 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 );
}
Это, однако, DOES устраняет проблему, и ОБА запросы по-прежнему выполняются успешно и точно !!
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