Conecte PHP a IBM i (AS / 400)

votos
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 back-end que se ejecuta en un iSeries con OS400 V5R3 para que pueda acceder a algunas tablas almacenadas allí. He hecho algunas averiguaciones, pero estoy tropezando con algunos obstáculos.

Por lo que he visto, las extensiones de DB2 y el software de DB2 de IBM solo se ejecutan bajo 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 lo que creo que debo hacer es configurar un segundo servidor que ejecute CentOS con DB2 instalado (muy probablemente a través de ZendCore para IBM, ya que parece hacer todo esto para 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 excesiva o alguien más tiene mejores ideas?

Publicado el 03/08/2008 a las 15:03
fuente por usuario
En otros idiomas...                            


8 respuestas

votos
16

¿Has considerado conectarte al servidor usando unixODBC ? Si mal no recuerdo, tiene soporte para IBM DB2 y compila en OpenBSD. Visite 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.

Respondida el 03/08/2008 a las 15:39
fuente por usuario

votos
4

En lugar de configurar una segunda caja, ¿por qué no miras 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 modelos de datos de 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í hay un PDF de IBM sobre el tema: http://i-seriesusergroup.org/wp-content/uploads/2006/09/PHP%20for%20i5OS%20NESDND.pdf

Respondida el 27/08/2008 a las 21:03
fuente por usuario

votos
2

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

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

Respondida el 25/08/2008 a las 00:10
fuente por usuario

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

Respondida el 03/08/2008 a las 22:31
fuente por usuario

votos
1

¿Por qué no usar 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 aunque OpenBSD se vincule con el manual del portador de FreeBSD, Freshports no es aplicable para su sistema).

Si PDO no está disponible y como espero que use puertos, de acuerdo con el siguiente enlace, hay disponible php5-ODBC:

Entonces, suponiendo que administre su sistema a través de los puertos, existen sus indicadores.

¡Espero que ayude!

Respondida el 01/10/2008 a las 19:16
fuente por usuario

votos
1

También puede conectarse directamente con un controlador ODBC estándar. 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.

Respondida el 23/09/2008 a las 14:42
fuente por usuario

votos
1

De hecho, un servicio web parece una excelente 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.

Respondida el 25/08/2008 a las 04:20
fuente por usuario

votos
1

Un servicio web es casi seguro 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.

Respondida el 19/08/2008 a las 22:51
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more