database - Connectez PHP à IBM i (AS / 400)

Translate

J'ai un projet à venir dans lequel je devrai connecter notre site Web (PHP5/Apache 1.3/OpenBSD 4.1) à notre système back-end fonctionnant sur un iSeries avec OS400 V5R3 afin que je puisse accéder à certaines tables qui y sont stockées. J'ai fait quelques vérifications mais je rencontre des barrages routiers.

D'après ce que j'ai vu, 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 même essayé leur extension ibm_db2 précompilée sans succès. IBM ne prend en charge que Linux, j'ai donc activé l'émulation Linux dans le noyau mais cela n'a pas semblé aider quoi que ce soit.

Si quelqu'un est tombé sur le fait que tout fonctionne nativement sous OpenBSD, ce serait génial, mais je pense que je devrai peut-être configurer un deuxième serveur exécutant CentOS avec DB2 installé (très probablement via ZendCore pour IBM car il semble tout faire ceci pour moi) et le pilote afin que je puisse configurer un petit serveur de transaction sur lequel je peux publier 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 est-ce que quelqu'un d'autre a de meilleures idées?

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

Toutes les réponses

Translate

Avez-vous regardé la connexion au serveur en utilisantunixODBC? Si je me souviens bien, il prend en charge IBM DB2 et compile sur OpenBSD. Check-outhttp://www.php.net/odbcpour plus d'informations sur le côté PHP.

Si vous ne pouvez pas faire fonctionner cela, la possibilité de configurer un service Web sur un serveur Linux peut être tout ce que vous pouvez faire.

La source
Levi Lee
Translate

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

Nous avons écrit un serveur simple en PHP qui charge les modèles de données à partir des 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 c'est tellement plus rapide des deux côtés de simplement sérialiser l'objet et de l'envoyer dans le tuyau.

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

La source
Translate

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

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

La source
Translate

On dirait qu'un service Web va être la réponse pour moi. Sur une boîte de production, je préférerais ne pas avoir à compiler et maintenir ma propre installation spéciale de PHP car le support ODBC doit être compilé, selon la documentation PHP.

La source
Translate

Un service Web est presque certainement la voie à suivre. Je suis sûr que vous avez déjà pensé à cela, mais comme vous utilisez PHP des deux côtés, vous pouvez raccourcir un peu les choses en utilisant serialize () pour créer vos données de réponse au lieu de créer un document XML approprié. Il est moins flexible sur le long terme, mais il vous permettra probablement d'être opérationnel plus rapidement.

La source
Translate

En effet, un webservice 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 service Web en Java au-dessus des outils AS400 pour Java (qui sont plutôt sympas, btw). Cela devrait au moins vous permettre d'exécuter également votre couche de service sur la boîte OpenBSD.

La source
Translate

Vous pouvez également vous connecter directement à l'aide d'un pilote ODBC standard. La version IBM vous offre généralement plus de fonctionnalités comme la possibilité d'appeler des programmes et des choses comme ça. Si vous n'avez besoin que de SQL et de procédures stockées, ODBC devrait fonctionner.

La source
Translate

Pourquoi ne pas utiliser PDO de PHP? Je dois deviner ici car 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 que vous avez également de la chance.

(Je suppose que même si OpenBSD est lié au manuel du porteur de FreeBSD,Freshportsne s'applique pas à votre système?)

Si PDO n'est pas disponible et que j'espère que vous utilisez des ports et que selon le lien suivant, php5-ODBC est disponible:

Donc, en supposant que vous gérez votre système via les ports, il y a vos pointeurs.

J'espère que ça t'as aidé!

La source