Domino 9 und frühere Versionen > ND7: Entwicklung
Zugriff auf Notes-DBs mit php
heini_schwammerl:
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.
Thomas Schulte:
Wie das geht und Codebeispiele gab es schon mal hier.
Thomas Schulte:
Das war zwar "nur" schreibend. Aber lesend ist im Prinzip das selbe.
schroederk:
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.
schroederk:
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>
--- Ende Code ---
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:
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln