Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: schroederk am 19.05.10 - 13:34:38

Titel: Domino und die COM-Schnittstelle
Beitrag von: schroederk am 19.05.10 - 13:34:38
Hallo,

ich bin ein wenig ratlos, da alle bisherigen Scripte, die über die COM-Schnittstelle Daten aus Domino herausziehen und an sich auch tadellos funktionieren,
verstärkt den Apache-Webserver zum Absturz bringen.
Das einzige was sich geändert hat, dass die Anzahl der Zugriffe über diese Schnittstelle sich signifikant erhöht hat.

Meine Vermutung geht momentan dahin, dass ich eventuell die geöffneten Verbindungen nicht sauber schließe.
Daher würde ich mich freuen, wenn jemand seine Erfahrungen mit mir teilen könnte.

So sieht ein beispielhaftes Script aus:

Code
// Öffnen der Schnittstelle
$session = new COM( "Lotus.NotesSession" );
$session->Initialize($notespassword);
$db = $session->getDatabase( $notesserver, $notesdb, false );
        
$view = $db->getView( $databaseview );
$entry = $view->GetFirstDocument();
while (is_object($entry)) {
	$field = $entry->GetFirstItem( $feldname );
	$entry = $view->getNextDocument($entry);
        echo $field."<br/>";
}

// Schließen der Verbindung
$session = null;
unset($session);

Titel: Re: Domino und die COM-Schnittstelle
Beitrag von: umi am 31.05.10 - 16:17:17
Schon mal daran gedacht, das ganze als Webservice zu implementieren?
bzw. per AJAX?

gruss
umi
Titel: Re: Domino und die COM-Schnittstelle
Beitrag von: schroederk am 01.06.10 - 09:01:18
Bedeutet Webservice nicht, dass Views der Datenbank erst "webfähig" gemacht werden müssen, also Anpassungen an der Schablone vorgenommen werden müssen?
Wir haben keinen Domino-Entwickler im Hause, daher vermeiden wir jegliche Anpassung der Standard-Schablonen.
Der Vorteil der COM-Schnittstelle ist gerade, dass Notes-seitig keine Änderung notwendig ist.
Laut IBM wird die Schnittstelle auch durchaus empfohlen und wird auch weiterhin in zukünftigen Versionen voll unterstützt.
Titel: Re: Domino und die COM-Schnittstelle
Beitrag von: spookycoder am 01.06.10 - 10:07:29
Bezogen auf Dein Beispiel oben, gibts es noch den Ansatz auch die beiden Variablen $entry, $view nach der Benutzung explizit freizugeben. Vielleicht ist einfach die Garbage Collection zu langsam und du hast eine art "leak" durch die vielen Aufrufe.

Titel: Re: Domino und die COM-Schnittstelle
Beitrag von: schroederk am 01.06.10 - 13:31:53
Das kann ich gerne mal versuchen... sicherlich dann auch noch $db....
In welcher Reihenfolge sollte ich die Variablen freigeben? Bei $session angefangen, dann $db etc... oder besser umgekehrt. Oder spielt es keine Rolle?
Titel: Re: Domino und die COM-Schnittstelle
Beitrag von: spookycoder am 02.06.10 - 13:04:36
Also in deinem Beispiel oben würd ich die Variablen in umgekehrter Reihenfolge auch wieder freigeben:

field, entry, view, db, session

Würd auch umgekehrt auch gar nicht gehen, wenn du den view wegwirfst wird entry ja im prinzip auch ungültig