2009-05-04 7 views
1

Ich stoße auf einen Fehler in der Advantage Database PHP Extension (ich weiß, ich weiß ...). Ich habe es als einen Fehler gemeldet, aber habe immer noch nichts zurück gehört, also dachte ich, ich würde es von euch ausführen.Ist das ein Fehler in Advantage Database?

Arbeits Code:

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

Diese Schleifen nur durch 100-mal, eine Verbindung mit dem db, führt eine Abfrage, und die Verbindung trennt.

Nicht-Arbeits Code:

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

Beachten Sie die zweite Abfrage-Ausführung? Diese Schleife nicht im 51. Zyklus (der DB-Server jede Anwendung zu 50 gleichzeitigen Verbindungen begrenzt) mit dem Fehler

Fehler 6303: Maximale Vorteil Database Server-Verbindungen überschritten. jedoch

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

Dies, TUT das Problem zu beheben, und beide Abfragen noch erfolgreich und genau auszuführen !!:

Ich habe mit dieser einige andere Dinge, versucht ohne Erfolg

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

Das alles scheint mir sehr seltsam ... irgendwelche Ideen?

EDIT: Ich bin auf PHP 5.2.5 und ADS 8.1

Antwort

4

Die Wissensbasis hat diesen Punkt auf die 6303-Fehler und wie die Anzahl der Verbindungen erhöhen möglich von einem Client, http://devzone.advantagedatabase.com/dz/content.aspx?Key=17&RefNo=981124-0621. R & D untersucht derzeit dieses Problem und arbeitet daran, es in der nächsten Service-Version zu lösen.

+0

Dies zeigt, was der Fehler bedeutet und wie mehr Verbindungen zugelassen werden. Es erklärt jedoch nicht, warum Sie einen maximalen Verbindungsfehler erhalten, wenn alle Verbindungen vor dem erneuten Verbinden geschlossen sind. – KOGI

+0

Das wäre der Teil, den R & D betrachtet. Es scheint ein Problem mit der Referenzzählung zu sein, wenn mehrere Anweisungen auf einer Verbindung geöffnet werden. – LanceSc

+0

F & E hat bestätigt, dass dies ein Fehler bei der Referenzzählung von Verbindungen mit mehreren offenen Anweisungen ist. Es wird in der nächsten Service Release behoben werden. – LanceSc

Verwandte Themen