Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top