Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: schroederk am 07.02.07 - 08:42:02

Titel: Zugriff auf Notes-DBs mit php
Beitrag von: schroederk am 07.02.07 - 08:42:02
Hallo Leute,

ich weiß nicht sorecht, ob ich im richtigen Bereich poste... Ich hoffe, die Admins mögen mir verzeihen und gegebenfalls den Topic verschieben.

Nachdem php das Thema wohl aufgegeben hat (Zunächst nach pecl (http://pecl.php.net/package/notes) verschoben und dort auch nicht mehr erreichbar, hab ich zwar eine Freeware-Variante einer Firma gefunden, allerdings hab ich keine Möglichkeit gefunden, einen authorisierten Zugriff zu gewährleisten.

Dann bin ich auf einen ODBC-Treiber von Lotus gestossen: NotesSQL (http://www-142.ibm.com/software/sw-lotus/products/product4.nsf/wdocs/notessqlhome)
Die Idee ist, per php dann den ODBC-Treiber anzusprechen.

Mitgeliefert wird ein Notes Authentication List Manager und der ODBC Treiber.

Ich hab meine notes.ini ID meine ID und mein Kennwort angegeben und hab einen neue ODBC-Verbindung eingerichtet, auf die lokale names.nsf wiederrum mit meiner ID.

Wenn ich jetzt per Excel oder Access auf den ODBC-Treiber verbinde, erhalte ich folgende Fehlermeldung:

Fehler beim SQLAllocHandle-Aufruf für Treiber SQL_HANDLE_DBC ... Diese Datei konnte nicht gelesen werden.

Ich habs mit verschiedenen DBs versucht, sowohl auf dem Server als auch lokal.

Hat jemand vielleicht schon Erfahrungen mit dem NotesSQL machen können und mir bei der Lösung des Problems behilflich sein?

Danke Euch!

Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: Thomas Schulte am 07.02.07 - 09:05:41
Php und Notes geht bei Windows Systemen ganz gut mit der COM Schnittstelle.
Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: schroederk am 07.02.07 - 10:57:09
Hallo Thomas,

Zugriff über die Com Schnittstelle sagt mir leider gar nichts.
Hast Du eventuell einen Link oder Beispiel ?

Gruß
Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: schroederk am 07.02.07 - 13:08:33
Wollte nur kurz nachreichen. Die Fimra, die offenbar einen NotesConnector kommerziell anbietet.
Natürlich gerne mit entsprechender Dienstleistung.
Sie bieten zwar kostenlos den Connector für das Auslesen von Notes-Views an, aber
schlau bin ich leider nicht aus dem Beispiel etc. geworden

Wer sich das aber mal antuen möchte: www.visol.de (http://www.visol.de/pages/php2notes.htm)
Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: schroederk am 07.02.07 - 13:33:49
Sorry für die vielen Posts von mir... Ich habe mal den Trace eingeschaltet und hab das Log mal hier angehängt.

Leider werde ich aus dem Log auch nicht schlau  ???
Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: heini_schwammerl am 07.02.07 - 14:15:42
Aufgrund Deiner Fragen würde ich eher über folgendes nachdenken.
Wenn die Daten ausschließlich in Notes gepflegt werden und php nur lesend zugreifen muß dann würde ich mir einen Gefallen tun und die Daten mit Hilfe von DECS in ein Fremdsystem schieben. Das kann dann ruhig MySQL über ODBC sein. Danach liest man seine Daten im PHP wie gewohnt aus.
Nachteil: Kein Realtime-Zugriff auf die Daten
Vorteil: Ist DECS erst einmal aufgesetzt und funktionsfähig ist die Lösung komfortabel und performant.
Wenn es nur im View Daten geht so könnte man die auch als XML über ReadViewEntries auslesen und dann im PHP weiterverarbeiten. Insbesondere im aktuellen 7er Release bei der man die Authentifizierung wohl für einzelne Views getrennt regeln kann eine machbare Alternative. Allerdings sind die XML Daten der DominoViews schwer zu parsen, man kann sich aber auch eigene XML Ansichten zusammenstellen.
Der Zugriff über COM (wie von Thomas beschrieben) funktioniert natürlich auch (unter Windows). Der Dominopart ist da relativ einfach, welche Möglichkeiten PHP hier bietet kann ich Dir leider nicht sagen. Es ist aber sicherlich kein Hexenwerk. Antworten zu com und php bekommst Du sicherlich eher in einem PHP Forum.
In der Hilfe gibt es ein paar Beispiele mit Zugriff über Visual Basic, ASP,  Active-X. 
Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: Thomas Schulte am 07.02.07 - 14:32:23
Wie das geht und Codebeispiele gab es schon mal hier (http://atnotes.de/index.php?topic=31337.20).
Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: Thomas Schulte am 07.02.07 - 14:33:37
Das war zwar "nur" schreibend. Aber lesend ist im Prinzip das selbe.
Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: schroederk am 09.02.07 - 08:07:38
Hab mir die Postings rund um die Codebeispiele durchgelesen.

Es wundert mich, dass Du (Thomas Schulte) überhaupt die COM Schnittstelle empfiehlst (... geht ganz gut mit der COM Schnittstelle...) obwohl Du massive Probleme hattest (Zugriffsprobleme mit Viertelstundentakt und letztendlich mindestens 1 Neustart pro Tag)

Ich wollte zwar zunächst nur auf unserem "älteren" Notesserver spielen, der noch mit 6.5 läuft, aber wie ich so raushöre, scheinen Webservices ab der 7er Version sinnvoll zu sein.

Ich würde zwar nachwievor die ODBC-Geschichte nicht vergessen wollen, weil sie eigentlich sehr vielversprechend aussah, aber gemacht wird, was am praktikabelsten ist.

Die Lösung über XML-Exports von Notes aus wäre interessant, wenn ich keinen Echtzeitzugriff benötigen würde.


Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: schroederk am 09.02.07 - 15:09:17
Ich hab mich mal ein wenig an die COM-Schnittstelle anhand des genannten Beispiels und der Notes-Hilfe versucht.
Ziel war es alle Namen des Notes-Adressbuchs anzeigen zu lassen.

Zunächst habe ich den 7.0.2er Cient auf dem Webserver lokal installiert.

Das Script sieht derzeit so aus:
Code
<html>
<head>
<title>Notes über COM</title>
</head>
<body>
<h2 align="center">Lotus Notes über COM-Schnittstelle ansprechen</h2>
<?
global $myConfig;
# COM Session aufbauen
$session = @new COM( "Lotus.NotesSession" );
if (!$session) {
	$this->lotuslog( "Leider konnte keine Verbindung zum Server hergestellt werden");
	return false;
}
$session->Initialize();
if ('' == $myConfig->sLotusDB) {
	$myConfig->sLotusDB = 'names.nsf';
}
$dbInput = $session->getDatabase( "", $myConfig->sLotusDB );
if( !$dbInput ) {
	$this->lotuslog( "Leider wurde die Datenbank für die Verarbeitung nicht gefunden");
	return false;
}
$view = $dbInput.GetView("Mail Users");
$viewnav = $view.CreateViewNav();
$pointer = $viewnav.GerFirstDocument();
while ($pointer) {
	$doc = $pointer.Document;
	$item1 = $doc.GetFirstItem("FullName");
	$wert = $item1.Values;
	echo "Name: $wert<br>";
	$pointer = $viewnav.GetNextDocument;
}
?>
</body>
</html>

Ich hab mich ein wenig schwer getan, den Namen einer View zu finden. Auch weiß nicht, wie die Authentifizierung stattfindet. Soweit ich verstanden habe, wird sich an der lokalen notes.ini orientiert, damit stehen ja Server und Benutzer-ID schonmal fest, aber nicht das Kennwort.

Das Script erzeugt derzeit keine Ausgabe noch eine Fehlermeldung noch sonstwas. Das Script scheint endlos laufen zu wollen. Also Fischen im Trüben.

Vielleicht hat jemand ein einfaches Beispielscript zur Hand?  :knuddel:

Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: Thomas Schulte am 09.02.07 - 15:21:18
Es wundert mich, dass Du (Thomas Schulte) überhaupt die COM Schnittstelle empfiehlst (... geht ganz gut mit der COM Schnittstelle...) obwohl Du massive Probleme hattest (Zugriffsprobleme mit Viertelstundentakt und letztendlich mindestens 1 Neustart pro Tag)
Ich hab da zwei Urteile was das angeht. Bei der einen Installation fliegt uns das regelmäßigst um die Ohren. Die andere läuft mit deutlich mehr Last seit drei Jahren stabil.
In der einen (der die nicht läuft) wird kontinuierlich gebastelt.
Ich kann dir nicht sicher sagen ob an den Abstürzen der Domino Server, Windows oder PHP schuld ist. Fakt ist nur das es abraucht. Und da in diesem Fall eh der Umstieg auf Webservices geplant ist ....

Wenn ich mit dem heutigen Stand der Domino Technik, sprich V7, eine Empfehlung abgeben würde dann würde die immer lauten. Geh auf Webservices. Danach hast du aber nicht gefragt.  ;D
Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: flaite am 09.02.07 - 15:50:32
Eine Alternative zu SOAP Webservices wäre es, von php aus einfach einen Notes-Agenten aufzurufen. http://<server>/db.nsf/RemoteAgent?openAgent&_werte_als_url_parameter. Auf die Art kann man sogar kleinere xml-encodierte Daten an Domino senden. Der Agent kann dann eine eigene xml Instanz generieren, die an php zurückgesendet wird. Hier steht Ende Februar ein Projekt an, wo es um Austausch Tomcat initiiert Verbindung mit Domino und Domino schickt was zurück. Und ich werde mich für die obige Lösung aussprechen. Nix SOAP.

Allerdings sind die XML Daten der DominoViews schwer zu parsen
Find ich nicht. Man sollte dafür auf jeden Fall sowas wie SAX nehmen.
Titel: Re: Zugriff auf Notes-DBs mit php
Beitrag von: schroederk am 12.02.07 - 06:57:58
Hmm, klingt an sich ganz interessant, obwohl ich lieber Notes so unangetastet lasse wie es geht.
Ich bin selber leider kein Notes-Profi, schon gar keiner der sich mit Lotusscript oder so auskennt.

Derzeit ist meine Aufgabe, 1. alle erforderlichen Daten aus dem Server-Adressbuch zu lesen und dort einen Agenten hinzuzufügen... Ich kenn mich, wie gesagt, zu wenig aus.
2. Kalenderdaten in einen allgemeinen Kalender und auch in die jeweiligen persönlichen Kalender zu schieben.

Ich hab viel mit Redundanzen zu kämpfen, sodass ich mit bis zu drei Datenpools leben muss: SAP, Notes und Intranet. Mit SAP kann ich mittlerweile ganz gut kommunizieren, vorrausgesetzt ich finde die passenden BAPIs und diese sind auch remotefähig, aber mit Notes...