database - Verbinden Sie PHP mit IBM i (AS / 400)

Translate

Ich habe ein bevorstehendes Projekt, bei dem ich unsere Website verbinden muss (PHP5/Apache 1.3/OpenBSD 4.1) auf unser Back-End-System, das auf einer iSeries mit OS400 V5R3 ausgeführt wird, damit ich auf einige dort gespeicherte Tabellen zugreifen kann. Ich habe ein bisschen nachgesehen, bin aber auf Straßensperren gestoßen.

Soweit ich gesehen habe, laufen die DB2-Erweiterungen und die DB2-Software von IBM nur unter Linux. Ich habe versucht, die Erweiterungen mit der gesamten Software von IBM zu kompilieren, und habe sogar die vorkompilierte Erweiterung ibm_db2 ohne Glück ausprobiert. IBM unterstützt nur Linux, daher habe ich die Linux-Emulation im Kernel aktiviert, aber das schien nichts zu helfen.

Wenn jemand darauf gestoßen ist, dass alles nativ unter OpenBSD ausgeführt wird, wäre das großartig, aber ich denke, ich muss möglicherweise einen zweiten Server einrichten, auf dem CentOS mit installiertem DB2 ausgeführt wird (höchstwahrscheinlich über ZendCore für IBM, da dies alles zu tun scheint dies für mich) und den Treiber, damit ich einen kleinen Transaktionsserver einrichten kann, auf dem ich posten kann, und eine JSON-Darstellung der benötigten DB2-Daten erhalten kann.

Scheint die zweite Option übertrieben oder hat jemand andere bessere Ideen?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Haben Sie sich die Verbindung zum Server mit angesehen?unixODBC? Wenn ich mich richtig erinnere, unterstützt es IBM DB2 und wird unter OpenBSD kompiliert. Auscheckenhttp://www.php.net/odbcWeitere Informationen zur PHP-Seite.

Wenn dies nicht funktioniert, können Sie möglicherweise nur einen Webdienst auf einem Linux-Server einrichten.

Quelle
Levi Lee
Translate

Warum schauen Sie nicht in den PHP Connector für iSeries, anstatt eine zweite Box einzurichten? Meine Mainframe-Leute sagten, es sei sehr einfach, hier auf unserer iSeries einzurichten.

Wir haben einen einfachen Server in PHP geschrieben, der Datenmodelle aus DB2-Daten lädt, serialisiert und an den Aufrufer zurückgibt. Dieser Ansatz bedeutet, dass nur eine andere PHP-App den Dienst nutzen kann, aber es ist an beiden Enden viel schneller, das Objekt zu serialisieren und es über die Pipe zu senden.

Hier ist ein PDF von IBM zu diesem Thema:http://i-seriesusergroup.org/wp-content/uploads/2006/09/PHP%20for%20i5OS%20NESDND.pdf

Quelle
Translate

Zum zweiten @John Downey habe ich Konnektivität erhalten, um mit PHP auf einem AS / 400 mit unixODBC zu arbeiten.

Überprüfen Sie Ihre phpinfo (), um festzustellen, ob unixODBC darin verfügbar ist. Ich musste es nicht in SLES 10 kompilieren.

Quelle
Translate

Es sieht so aus, als würde ein Webdienst die Antwort für mich sein. Auf einer Produktionsbox muss ich lieber nicht meine eigene spezielle Installation von PHP kompilieren und warten, da die ODBC-Unterstützung gemäß der PHP-Dokumentation kompiliert werden muss.

Quelle
Translate

Ein Webdienst ist mit ziemlicher Sicherheit der richtige Weg. Ich bin mir sicher, dass Sie bereits darüber nachgedacht haben, aber da Sie auf beiden Seiten PHP ausführen, können Sie die Dinge ein wenig verkürzen, indem Sie serialize () verwenden, um Ihre Antwortdaten zu erstellen, anstatt ein richtiges XML-Dokument zu erstellen. Es ist auf lange Sicht weniger flexibel, aber es wird Sie wahrscheinlich schneller zum Laufen bringen.

Quelle
Translate

In der Tat scheint ein Webservice eine großartige Möglichkeit zu sein, das Problem zu lösen. Eine Möglichkeit, ein völlig separates Betriebssystem zu vermeiden, besteht darin, den Webservice in Java über die AS400-Tools für Java zu schreiben (die übrigens recht nett sind). Damit sollten Sie zumindest Ihre Service-Schicht auch auf der OpenBSD-Box ausführen können.

Quelle
Translate

Sie können auch direkt mit einem Standard-ODBC-Treiber eine Verbindung herstellen. Die IBM Version bietet Ihnen normalerweise mehr Funktionen wie das Aufrufen von Programmen und dergleichen. Wenn Sie nur SQL und gespeicherte Prozeduren benötigen, sollte ODBC funktionieren.

Quelle
Translate

Warum nicht PDO von PHP verwenden? Ich muss hier raten, da ich keine öffentliche Liste aller für OpenBSD verfügbaren Ports finden konnte, aber da es einen Port für FreeBSD, NetBSD usw. gibt, haben Sie vielleicht auch Glück.

(Ich denke, obwohl OpenBSD auf das Porter-Handbuch von FreeBSD verweist,Freshportsgilt nicht für Ihr System?)

Wenn PDO nicht verfügbar ist und ich hoffe, dass Sie Ports verwenden und gemäß dem folgenden Link ist php5-ODBC verfügbar:

Angenommen, Sie verwalten Ihr System über Ports, gibt es Ihre Zeiger.

Hoffentlich hilft das!

Quelle