2008-08-03 7 views
30

J'ai un projet à venir dans lequel je vais devoir connecter notre site Web (PHP5/Apache 1.3/OpenBSD 4.1) à notre système dorsal fonctionnant sur une iSeries avec OS400 V5R3 afin que je puisse accéder à certains tables stockées là. J'ai fait quelques vérifications mais je rencontre des obstacles. D'après ce que j'ai pu constater, les extensions DB2 et le logiciel DB2 d'IBM ne fonctionnent que sous Linux. J'ai essayé de compiler les extensions avec tous les logiciels d'IBM et j'ai même essayé leur extension précompilée ibm_db2 sans aucune chance. IBM ne prend en charge Linux que si j'ai activé l'émulation Linux dans le noyau, mais cela ne semble pas aider. Si tout le monde a tout ce qu'il faut pour exécuter tout ce qui fonctionne sous OpenBSD, ce serait génial, mais ce que je pense devoir faire est de configurer un second serveur exécutant CentOS avec DB2 installé (probablement via ZendCore pour IBM car semble faire tout cela pour moi) et le pilote pour que je puisse mettre en place un petit serveur de transaction sur lequel je peux poster et obtenir une représentation JSON des données DB2 dont j'ai besoin. La deuxième option semble-t-elle exagérée ou quelqu'un d'autre a-t-il de meilleures idées?Connectez PHP à IBM i (AS/400)

Répondre

17

Avez-vous regardé la connexion au serveur en utilisant unixODBC? Si je me souviens bien, il supporte IBM DB2 et compile sur OpenBSD. Découvrez http://www.php.net/odbc pour plus d'informations concernant le côté PHP.

Si vous n'arrivez pas à faire fonctionner cela, l'option pour installer un service Web sur un serveur Linux peut être tout ce que vous pouvez faire.

2

On dirait qu'un service web va être la réponse pour moi. Dans une boîte de production, je préfère ne pas avoir à compiler et à maintenir ma propre installation de PHP, car la prise en charge d'ODBC doit être compilée, selon la documentation de PHP.

1

Un service Web est presque certainement le chemin à parcourir. Je suis sûr que vous avez déjà pensé à cela, mais puisque vous faites du PHP des deux côtés, vous pouvez raccourcir un peu les choses en utilisant serialize() pour construire vos données de réponse au lieu de créer un document XML approprié. Il est moins flexible à long terme, mais il vous permettra probablement de fonctionner plus rapidement.

2

Pour ajouter @John Downey, j'ai obtenu une connectivité pour travailler avec PHP sur un AS/400 avec unixODBC.

Vérifiez votre phpinfo() pour voir si unixODBC est disponible. Je n'ai pas eu à le compiler sur SLES 10.

1

En effet, un service web semble être un excellent moyen de résoudre le problème. Une façon d'éviter d'avoir un système d'exploitation complètement séparé serait d'écrire le webservice en Java en plus des outils AS400 pour Java (qui sont plutôt sympas, btw). Cela devrait au moins vous permettre d'exécuter votre couche de service sur la boîte OpenBSD.

4

Plutôt que d'installer une deuxième boîte, pourquoi ne pas regarder dans le connecteur PHP pour iSeries? Mes gars de mainframe ont dit que c'était très facile à installer sur notre iSeries ici.

Nous avons écrit un serveur simple en PHP qui charge des modèles de données à partir de données DB2, les sérialise et les renvoie à l'appelant. Cette approche signifie que seule une autre application PHP peut consommer le service, mais il est tellement plus rapide aux deux extrémités de simplement sérialiser l'objet et de l'envoyer dans le tuyau.

Voici un PDF à partir d'IBM sur le sujet: http://i-seriesusergroup.org/wp-content/uploads/2006/09/PHP%20for%20i5OS%20NESDND.pdf

1

Vous pouvez vous connecter directement à l'aide d'un pilote standard ODBC ainsi.La version IBM vous donne généralement plus de fonctionnalités comme pouvoir appeler des programmes et des choses comme ça. Si vous avez seulement besoin de procédures SQL et stockées, ODBC devrait fonctionner. Pourquoi ne pas utiliser PDO de PHP?

1

Je dois deviner ici parce que je n'ai pas pu trouver une liste publique de tous les ports disponibles pour OpenBSD, mais comme il y a un port pour FreeBSD, NetBSD, etc., peut-être vous avez de la chance aussi.

(je suppose que même si des liens OpenBSD au manuel de portier de FreeBSD, Freshports n'est pas applicable pour votre système?)

Si AOP n'est pas disponible et que j'espère que vous utilisez des ports et selon l'y lien suivant est php5-ODBC disponibles:

donc en supposant que vous gérer votre système par les ports, il y a vos pointeurs.

Espérons que ça aide!