Подключите PHP к IBM i (AS / 400) - PullRequest
32 голосов
/ 03 августа 2008

У меня есть предстоящий проект, в котором мне нужно будет подключить наш веб-сайт (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, которые мне нужны.

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

Ответы [ 8 ]

18 голосов
/ 03 августа 2008

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

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

4 голосов
/ 28 августа 2008

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

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

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

2 голосов
/ 25 августа 2008

Во-вторых, @Даун Дауни, я получил возможность работать с PHP на AS / 400 с unixODBC.

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

2 голосов
/ 04 августа 2008

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

1 голос
/ 01 октября 2008

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

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

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

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

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

1 голос
/ 23 сентября 2008

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

1 голос
/ 25 августа 2008

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

1 голос
/ 20 августа 2008

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

...