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

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

Author: Buck Calabro, 2008-08-03

8 answers

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

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

 17
Author: John Downey, 2015-05-20 00:18:44

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

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

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

 4
Author: , 2008-08-27 20:03:12

Чтобы поддержать @John Downey, я получил возможность работать с PHP на AS/400 с unixODBC.

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

 2
Author: andyhky, 2008-08-24 23:10:28

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

 2
Author: dragonmantank, 2013-01-09 05:46:43

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

 1
Author: J.T. Grimes, 2008-08-19 21:51:57

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

 1
Author: jsight, 2008-08-25 03:20:53

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

 1
Author: Mike Wills, 2008-09-23 13:42:07

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

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

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

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

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

 1
Author: Till, 2008-10-01 18:16:11