Подтвердить что ты не робот

Подключить PHP к IBM я (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, которые мне нужны.

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

4b9b3361

Ответ 1

Рассматриваете ли вы подключение к серверу с помощью unixODBC? Если я правильно помню, он поддерживает IBM DB2 и компилируется на OpenBSD. Подробнее см. http://www.php.net/odbc.

Если вы не можете заставить это работать, возможно, вы сможете настроить веб-службу на сервере Linux.

Ответ 2

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

Мы написали простой сервер в PHP, который загружает модели данных из данных DB2, сериализует их и возвращает их вызывающему. Этот подход означает, что только другое приложение PHP может использовать эту услугу, но на обоих концах это намного быстрее, чтобы просто сериализовать объект и отправить его по каналу.

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

Ответ 3

Похоже, что веб-сервис станет для меня ответом. В производственной коробке я бы предпочел не заниматься компиляцией и поддержкой моей собственной специальной установки PHP, поскольку поддержка ODBC должна быть скомпилирована в соответствии с документацией PHP.

Ответ 4

Во второй @John Downey, я получил возможность подключения к PHP на AS/400 с помощью unixODBC.

Проверьте ваш phpinfo(), чтобы узнать, доступен ли в нем unixODBC. Мне не пришлось компилировать его на SLES 10.

Ответ 5

Веб-сервис - это почти наверняка путь. Я уверен, что вы уже об этом подумали, но так как вы делаете PHP с обеих сторон, вы можете немного сократить некоторые вещи, используя serialize() для создания ваших ответов, а не для создания надлежащего XML-документа. Он менее гибкий в долгосрочной перспективе, но он, вероятно, ускорит и ускорит работу.

Ответ 6

Действительно, веб-сервис кажется отличным способом решения проблемы. Один из способов избежать создания отдельной ОС для нее - это написать webservice в Java поверх инструментов AS400 для Java (что довольно хорошо, кстати). Это должно, по крайней мере, позволить вам запустить ваш сервисный уровень в поле OpenBSD.

Ответ 7

Вы можете напрямую подключиться, используя стандартный драйвер ODBC. Версия IBM обычно дает вам больше возможностей, таких как возможность вызова программ и тому подобное. Если вам нужны только SQL и хранимые процедуры, ODBC должен работать.

Ответ 8

Почему бы не использовать PDO из PHP? Я должен угадать, так как я не мог найти публичный список всех портов, доступных для OpenBSD, но поскольку есть порт для FreeBSD, NetBSD и т.д., Возможно, вам тоже повезет.

(я полагаю, что хотя OpenBSD ссылается на справочник FreeBSD porter, Freshports не применим для вашей системы?)

Если PDO недоступен, и поскольку я надеюсь, что вы используете порты, и в соответствии со следующей ссылкой существует доступный php5-ODBC:

Итак, если вы управляете своей системой через порты, есть свои указатели.

Надеюсь, что это поможет!