Connectez PHP à IBM i (AS / 400)

J'ai un projet à venir dans lequel je vais devoir connecter notre site web ( PHP5 / Apache 1.3 / OpenBSD 4.1 ) à notre système back-end fonctionnant sur une iSeries avec OS400 V5R3 pour que je puisse accéder à tables stockées là. J'ai fait quelques vérifications mais je rencontre des obstacles.

D'après ce que j'ai vu, les extensions DB2 et le logiciel DB2 d'IBM fonctionnent uniquement 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 quelqu'un a couru pour avoir tout ce qu'il faut pour fonctionner 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 il semble faire tout ceci pour moi) et le pilote afin que je puisse mettre en place 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 quelqu'un d'autre a-t-il de meilleures idées?

0
ajouté édité
Vues: 2

9 Réponses

Le fibré normal à M dans MxM est isomorphe au fibré tangent de M, donc un voisinage tubulaire N de M dans MxM est isomorphe au fibré tangent de M. Une section s du fibré tangent avec des zéros isolés donne ainsi une sous-variété M ' de N \ sous-ensemble MxM avec les propriétés suivantes:

1) M 'est isotope à M.

2) Les intersections de M 'avec M sont en bijection avec les zéros de s (et leurs signes sont donnés par les indices des zéros).

Le résultat souhaité découle alors de la formule de l'indice de Hopf.

17
ajouté

Voici un essai sur un argument de la théorie de la gerbe que j'ai toujours pensé fonctionner, mais que je n'ai jamais essayé:

Le nombre d'intersection de deux sous-variétés transversales $ A $ et $ B $ de dimension complémentaire dans une troisième variété $ C $ peut être calculé comme $ \ chi (A \ otimes B) $, où j'utilise $ A $ et $ B $ pour désigner les réas de structure des variétés correspondantes, et le produit tensoriel se déroule en $ C $ -mod. Dans le cas où l'intersection n'est pas transversale, cela fonctionne toujours à condition de prendre un produit tensoriel dérivé (prendre une famille plate déplaçant l'un des intersectands vers une position générale, et utiliser l'invariance de $ \ chi $ sous une déformation plate pour un complexe représentant l'autre intersectand, peut-être?).

En supposant ce qui précède, l'auto-intersection $ M $ de la diagonale $ M $ en $ M \ fois M $ est $ \ chi (M \ otimes ^ L M) $. Comme $ M $ est lisse, $ \ text {Tor} ^ i (M, M) = \ Omega ^ i $. Par l'additivité de $ \ chi $, vous obtenez:

$ MM = \ sum_i \ chi (\ Omega ^ i) (-1) ^ i $

D'autre part, le théorème de Rham (ou le lemme de Poincaré?) Identifie le côté droit avec $ \ chi (M, \ text {gerbe constant}) = \ chi (M) $, donc nous avons terminé.

7
ajouté

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.

0
ajouté

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 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.

0
ajouté

Vous pouvez également vous connecter directement à l'aide d'un pilote ODBC standard. 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.

0
ajouté

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.

0
ajouté

Pourquoi ne pas utiliser PDO de PHP? 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.

(J'imagine que même si OpenBSD est relié au manuel du portier de FreeBSD, Freshports ne s'applique pas à votre système?)

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

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

J'espère que cela pourra aider!

0
ajouté

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

Si vous ne parvenez pas à obtenir ce résultat, l'option permettant de configurer un service Web sur un serveur Linux est peut-être tout ce que vous pouvez faire.

0
ajouté

Pour seconder 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 dedans. Je n'ai pas eu à le compiler sur SLES 10.

0
ajouté