2008-08-03 33 views
30

Tengo un próximo proyecto en el que tendré que conectar nuestro sitio web (PHP5/Apache 1.3/OpenBSD 4.1) a nuestro sistema de fondo que se ejecuta en un iSeries con OS400 V5R3 para poder acceder a algunos tablas almacenadas allí. He hecho algunas averiguaciones, pero estoy tropezando con algunos obstáculos.Conectar PHP a IBM i (AS/400)

Según lo que he visto, las extensiones de DB2 y el software de DB2 de IBM solo se ejecutan en Linux. Intenté compilar las extensiones con todo el software de IBM e incluso probé su extensión ibm_db2 precompilada sin suerte. IBM solo es compatible con Linux, por lo que activé la emulación de Linux en el kernel, pero eso no pareció ayudar en nada.

Si alguien ha encontrado que todo se ejecute de forma nativa bajo OpenBSD, sería genial, pero creo que tengo que hacer un segundo servidor con CentOS con DB2 instalado (muy probablemente a través de ZendCore para IBM ya que parece hacer todo esto por mí) y el controlador para que pueda configurar un pequeño servidor de transacciones que pueda publicar en contra y obtener una representación JSON de los datos de DB2 que necesito.

¿La segunda opción parece exagerada o alguien más tiene alguna idea mejor?

Respuesta

17

¿Ha mirado conectarse al servidor usando unixODBC? Si mal no recuerdo, tiene soporte para IBM DB2 y compila en OpenBSD. Consulte http://www.php.net/odbc para obtener más información sobre PHP.

Si no puede hacer que funcione, la opción de configurar un servicio web en un servidor Linux puede ser todo lo que puede hacer.

2

Parece que un servicio web va a ser la respuesta para mí. En una caja de producción, preferiría no tener que pasar por la compilación y el mantenimiento de mi propia instalación especial de PHP, ya que el soporte ODBC necesita ser compilado, de acuerdo con la documentación de PHP.

1

Un servicio web es casi seguro que es el camino a seguir. Estoy seguro de que ya has pensado en esto, pero ya que estás haciendo PHP en ambos lados, puedes atajar un poco las cosas usando serialize() para construir tus datos de respuesta en lugar de construir un documento XML apropiado. Es menos flexible a largo plazo, pero probablemente lo pondrá en funcionamiento más rápidamente.

2

Al segundo @John Downey, obtuve conectividad para trabajar con PHP en un AS/400 con unixODBC.

Revise su phpinfo() para ver si unixODBC está disponible en él. No tuve que compilarlo en SLES 10.

1

De hecho, un servicio web parece una gran manera de resolver el problema. Una forma de evitar tener un SO completamente separado sería escribir el servicio web en Java sobre las herramientas AS400 para Java (que son bastante agradables, por cierto). Eso debería al menos permitirle ejecutar su capa de servicio en el cuadro de OpenBSD también.

4

En lugar de configurar una segunda caja, ¿por qué no miras en el conector de PHP para iSeries? Mis chicos de mainframe dijeron que era muy fácil de instalar en nuestro iSeries aquí.

Escribimos un servidor simple en PHP que carga los modelos de datos de los datos de DB2, los serializa y los devuelve a la persona que llama. Este enfoque significa que solo otra aplicación de PHP puede consumir el servicio, pero es mucho más rápido en ambos extremos para serializar el objeto y enviarlo por la tubería.

Aquí es un PDF de IBM sobre el tema: http://i-seriesusergroup.org/wp-content/uploads/2006/09/PHP%20for%20i5OS%20NESDND.pdf

1

Se puede conectar directamente a través de un controlador estándar ODBC también.La versión de IBM generalmente le ofrece más funciones, como poder llamar a programas y cosas por el estilo. Si solo necesita SQL y procedimientos almacenados, ODBC debería funcionar.

1

¿Por qué no utilizar PDO de PHP? Tengo que adivinar aquí, ya que no pude encontrar una lista pública de todos los puertos disponibles para OpenBSD, pero dado que hay un puerto para FreeBSD, NetBSD, etc., tal vez tengas suerte también.

(supongo que a pesar de OpenBSD enlaces a manual del portero de FreeBSD, Freshports no es aplicable para su sistema?)

Si DOP no está disponible y ya estoy esperando que utiliza los puertos y de acuerdo con el siguiente enlace allí es php5-ODBC disponibles:

Así que suponiendo que administrar el sistema mediante los puertos, hay punteros.

Espero que ayude!

Cuestiones relacionadas