Свържете PHP към IBM i (AS/400)

Имам предстоящ проект, в който ще трябва да свържа нашия уеб сайт (PHP5/Apache 1.3/OpenBSD 4.1) към нашата бек-енд система, работеща на iSeries с OS400 V5R3, така че да имам достъп до някои таблици, съхранени там. Направих някои проверки наоколо, но се натъквам на някои пречки.

От това, което съм виждал, DB2 разширенията и DB2 софтуерът от IBM работят само под Linux. Опитах да компилирам разширенията с целия софтуер от IBM и дори опитах тяхното предварително компилирано разширение ibm_db2 без успех. IBM поддържа само Linux, така че включих емулацията на Linux в ядрото, но това изглежда не помогна с нищо.

Ако някой се е сблъсквал с това, че всичко може да работи първоначално под OpenBSD, това би било чудесно, но това, което мисля, че може да трябва да направя, е да настроя втори сървър, работещ с CentOS с инсталиран DB2 (най-вероятно чрез ZendCore за IBM, тъй като изглежда, че прави всичко това за мен) и драйвера, така че да мога да настроя малък сървър за транзакции, срещу който мога да публикувам, и да получа JSON представяне на DB2 данните, от които се нуждая.

Вторият вариант изглежда ли пресилен или някой друг има по-добри идеи?


person dragonmantank    schedule 03.08.2008    source източник


Отговори (8)


Гледали ли сте свързването към сървъра чрез unixODBC? Ако си спомням правилно, има поддръжка за IBM DB2 и се компилира на OpenBSD. Вижте http://www.php.net/odbc за повече информация относно страната на PHP.

Ако не можете да накарате това да работи, опцията за настройка на уеб услуга на Linux сървър може да е всичко, което можете да направите.

person John Downey    schedule 03.08.2008

Вместо да настроите втора кутия, защо не разгледате PHP конектора за iSeries? Моите момчета за мейнфрейм казаха, че е много лесно да се инсталира на нашия iSeries тук.

Написахме прост сървър на PHP, който зарежда модели на данни от DB2 данни, сериализира ги и ги връща на извикващия. Този подход означава, че само друго PHP приложение може да използва услугата, но е много по-бързо и от двата края просто да сериализирате обекта и да го изпратите по тръбата.

Ето PDF файл от IBM по темата: http://i-seriesusergroup.org/wp-content/uploads/2006/09/PHP%20for%20i5OS%20NESDND.pdf

person Community    schedule 27.08.2008

На второ място на @John Downey, получих връзка за работа с PHP на AS/400 с unixODBC.

Проверете вашия phpinfo(), за да видите дали unixODBC е наличен в него. Не трябваше да го компилирам в SLES 10.

person andyhky    schedule 24.08.2008

Изглежда, че уеб услуга ще бъде отговорът за мен. На производствена кутия предпочитам да не ми се налага да компилирам и поддържам моята собствена специална инсталация на PHP, тъй като поддръжката на ODBC трябва да бъде компилирана, според документацията на PHP.

person dragonmantank    schedule 03.08.2008

Уеб услугата почти сигурно е правилният начин. Сигурен съм, че вече сте мислили за това, но тъй като правите PHP и от двете страни, можете малко да съкратите нещата, като използвате serialize(), за да изградите вашите данни за отговор, вместо да изграждате подходящ XML документ. Той е по-малко гъвкав в дългосрочен план, но вероятно ще ви накара да започнете да работите по-бързо.

person J.T. Grimes    schedule 19.08.2008

Наистина уеб услугата изглежда като чудесен начин за решаване на проблема. Един от начините да избегнете наличието на напълно отделна операционна система за него би бил да напишете уеб услугата на Java върху инструментите AS400 за Java (които са доста хубави, btw). Това би трябвало поне да ви позволи да стартирате вашия сервизен слой и в кутията на OpenBSD.

person jsight    schedule 25.08.2008

Можете да се свържете директно и с помощта на стандартен ODBC драйвер. Версията на IBM обикновено ви дава повече функции, като например да можете да извиквате програми и подобни неща. Ако имате нужда само от SQL и съхранени процедури, ODBC трябва да работи.

person Mike Wills    schedule 23.09.2008

Защо не използвате PDO от PHP? Трябва да се досетя тук, тъй като не можах да намеря публичен списък с всички налични портове за OpenBSD, но тъй като има порт за FreeBSD, NetBSD и т.н., може би ще имате и късмет.

(Предполагам, че въпреки че OpenBSD препраща към наръчника за пренасяне на FreeBSD, Freshports не е приложим за вашата система?)

Ако PDO не е наличен и тъй като се надявам да използвате портове и според следната връзка има наличен php5-ODBC:

Така че, ако приемем, че управлявате системата си чрез портове, има вашите указатели.

Надявам се това да помогне!

person Till    schedule 01.10.2008