У меня есть предстоящий проект, в котором мне нужно будет подключить наш сайт ( 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.
Вместо того, чтобы настраивать второй ящик, почему бы вам не взглянуть на PHP-коннектор для iSeries? Мои ребята из мэйнфрейма сказали, что здесь очень просто настроить наш iSeries.
Мы написали простой сервер в PHP, который загружает модели данных из данных DB2, сериализует их и возвращает их вызывающему. Этот подход означает, что только другое приложение PHP может потреблять услугу, но на обоих концах гораздо быстрее, просто сериализуя объект и отправляя его по трубе.
Вот PDF от IBM по теме: http://i-seriesusergroup.org/wp-content/uploads/2006/09/PHP%20for%20i5OS%20NESDND.pdf
К второму @ Джону Дауни я подключился к работе с PHP на AS / 400 с помощью unixODBC.
Проверьте ваш phpinfo (), чтобы узнать, доступен ли в нем unixODBC. Мне не пришлось составлять его на SLES 10.
Похоже, что веб-сервис станет для меня ответом. В производственной коробке я бы предпочел не заниматься компиляцией и поддержкой моей собственной специальной установки PHP, поскольку поддержка ODBC должна быть скомпилирована в соответствии с документацией PHP.
Веб-сервис – это почти наверняка путь. Я уверен, что вы уже об этом подумали, но так как вы делаете PHP с обеих сторон, вы можете немного сократить некоторые вещи, используя serialize () для создания ваших ответов, а не для создания надлежащего XML-документа. Он менее гибкий в долгосрочной перспективе, но он, вероятно, заставит вас работать быстрее.
Действительно, веб-сервис представляется отличным способом решения проблемы. Один из способов избежать создания отдельной ОС для нее – это написать webservice в Java поверх инструментов AS400 для Java (что довольно хорошо, кстати). Это должно по крайней мере позволить вам запустить ваш сервисный уровень в поле OpenBSD.
Вы можете напрямую подключиться, используя стандартный драйвер ODBC. Версия IBM обычно дает вам больше возможностей, таких как возможность вызова программ и тому подобное. Если вам нужны только SQL и хранимые процедуры, ODBC должен работать.
Почему бы не использовать PDO из PHP? Я должен угадать здесь, так как я не мог найти публичный список всех портов, доступных для OpenBSD, но поскольку есть порт для FreeBSD, NetBSD и т. Д., Возможно, вам тоже повезет.
(Я полагаю, что хотя OpenBSD ссылается на справочник носителей FreeBSD, Freshports не применим для вашей системы?)
Если PDO недоступен, и поскольку я надеюсь, что вы используете порты, и по следующей ссылке есть доступ к php5-ODBC:
Поэтому, полагая, что вы управляете своей системой через порты, есть свои указатели.
Надеюсь, это поможет!