 | Уровень сложности: средний Маргарет Мислинска, инженер-программист, стажёр, IBM Эндрю Нир, инженер-программист, стажёр, IBM Дэвид Свенсон, инженер-программист, стажёр, IBM Глория Веласкес, инженер-программист, стажёр, IBM Кэтрин Лэмонт, инженер-программист, IBM Дэвид Пераса, инженер-программист, IBM
18.01.2008
Научитесь устанавливать PHP и DB2® на System i™ и узнайте, как переносить приложения MySQL на DB2, работающую под управлением i5/OS®. Познакомьтесь с историей и типами архитектур PHP, в том числе с новой архитектурой, которая позволяет переносить приложения PHP на System i(TM), используя i5/OS с сервером HTTP Apache и базу данных IBM DB2. Познакомьтесь с Web-приложениями на PHP. Узнайте, почему использование приложений PHP особенно выгодно для малого и среднего бизнеса, ведь приложения PHP с открытым исходным кодом часто недороги и легко доступны. [Опция продукта CCA Cryptographic Service Provider был изменена с 13 на 35. Было изменено название, чтобы показать, что это первая статья в серии. - прим.ред.]
Введение: Обмен опытом
3 апреля 2006 года IBM® и Zend Technologies Ltd.™ начали перенос движка гипертекстового препроцессора (PHP) и инструментов разработки PHP на платформу System i. PHP очень популярен в сообществе разработчиков открытого исходного кода благодаря его способности создавать динамические Web-приложения. Сообщество разработчиков открытого исходного кода PHP создали буквально тысячи PHP-приложений для самых разных нужд. Клиенты System i будут весьма заинтересованы количеством приложений и возможностями, которые открывает эта новая технология для мира бизнеса.
Три раздела статьи посвящены трём основным темам:
-
Общий обзор - Общий обзор PHP на System i, включая историю развития PHP, объяснение его важности на System i, а также типов существующих для PHP архитектур.
-
Web-приложения PHP - приложения на PHP, включая примеры трех конкретных приложений.
-
Вопросы выбора базы данных и установки PHP на System i - Наш общий опыт работы с PHP на System i. В этом разделе содержится информация об установке PHP, использовании базы данных DB2 с PHP, а также о переносе существующих приложений PHP на базу данных DB2, в том числе и о многих типичных различиях, которые могут встретиться вам при переносе приложений базы данных MySQL® на DB2, работающую под управлением i5/OS.
Общий обзор PHP на System i
Язык PHP начинался как Personal Home Page: (личная домашняя страница) - простое расширение Perl, написанное Расмусом Лердорфом (Rasmus Lerdorf) в 1994 году. Сегодня PHP обозначает гипертекстовый препроцессор. В 1997 году Зив Сураски (Zeeve Suraski) и Энди Гутманс (Andi Gutmans) создали PHP 3. Спустя небольшое время они основали Zend Technologies Ltd., компанию, производящую Zend Engine для PHP.
Одной из основных отличительных особенностей PHP является то, что большинство написанных под него программ имеют открытый исходный код. Открытость исходного кода означает, что у всех есть свободный доступ к коду и любой может изменять и распространять его, бесплатно или с целью получения прибыли. По этой причине существует множество приложений PHP, и многие из них бесплатны. В качестве примеров таких приложений можно назвать онлайн-энциклопедии, доски объявлений и магазины, которые можно использовать для ведения своего небольшого или среднего бизнеса.
Популярность PHP
Сегодня PHP является одним из наиболее распространённых языков программирования в Интернете - с PHP работают более 4,5 миллионов разработчиков и более 22 миллионов доменов в Интернете используют PHP. PHP представляет собой мощный серверный язык сценариев, который можно использовать для создания динамических Web-сайтов и приложений.
Архитектурные шаблоны PHP
Существует два наиболее распространённых архитектурных шаблона реализации PHP на сервере: LAMP и WIMP. LAMP (Linux®-Apache-MySQL-PHP) использует операционную систему семейства Linux. В LAMP используется сервер HTTP Apache с движком Zend Core PHP, а подключение к PHP-приложениям производится посредством MySQL. WIMP (Windows®-IIS-MySQL-PHP) использует операционную систему семейства Windows и Microsoft Internet Information Services (IIS) вместо Apache.
Недавно программисты IBM и Zend разработали третий архитектурный шаблон, позволяющий PHP работать на платформе IBM System i. В этой архитектуре используется i5/OS с HTTP-сервером Apache, а приложения соединяются с базой данных IBM DB2.
Преимущества использования PHP на System i
К числу многочисленных преимуществ использования PHP на платформе System i относятся:
- В платформу System i уже интегрированы все компоненты, необходимые для обеспечения надёжных бизнес-вычислений - операционная система, система управления базами данных, система обеспечения безопасности и сетевая подсистема. Эти компоненты, в сочетании со средой Zend PHP, предоставляют все ресурсы, необходимые для разработки Web-приложений, способных работать с большими пользовательскими базами.
- PHP - это надежный, масштабируемый, стабильный и безопасный язык разработки высокопроизводительных ответственных Web-приложений. Преимущества этого гибкого языка на машинах System i будут особенно полезны компаниям малого и среднего бизнеса.
- Язык PHP поддерживает сервис-ориентированную архитектуру (Service-Oriented Architecture, SOA), предоставляя поддержку Web-сервисов.
- PHP хорошо интегрируется с традиционными системами, базами данных и другими приложениями.
- На PHP написаны тысячи гибко настраиваемых приложений с открытым исходным кодом, которые можно использовать для быстрой реализации и поддержки бизнес-приложений.
- Хотя самая популярная область его применения – вероятно, соединение с базами данных, можно также настроить PHP на работу в качестве самостоятельного интерфейса Common Gateway Interface (CGI). Версия CGI работает на любых серверах и на большинстве операционных систем. Единственным недостатком использования CGI является меньшая производительность.
- Сценарии PHP можно интегрировать с различными внешними библиотеками, что позволяет выполнять множество операций, используя тем самым преимущества платформы System i.
Совместимость с традиционными языками
На протяжении долгих лет System i служит платформой для выполнения программ на RPG, COBOL и других традиционных языках. Поскольку PHP совместим с традиционными языками, System i может напрямую вызывать максимально оптимизированные программы RPG и COBOL. Использование API, который взаимодействует непосредственно с этими языками, вместо альтернативных решений, подобных SOA, облегчает разработку Web-приложений. Однако производительность таких приложений зависит от предполагаемого использования. PHP больше подходит для систем малого и среднего бизнеса, тогда как для более крупных и масштабируемых приложений лучше подходят Web-сервисы SOA. Использование совместимости PHP с языками программирования IBM может снизить затраты времени и средств на повторную разработку, необходимые для замены существующего программного обеспечения.
Web-приложения на PHP
Использование PHP на платформе System i открывает клиентам путь к преимуществам тысяч Web-приложений с открытым исходным кодом. Приложения на PHP популярны как среди домашних, так и среди корпоративных клиентов. Многие из этих приложений позволяют быстро разрабатывать и адаптировать решения без особых технических навыков и знания языков программирования. Многие из таких приложений относятся к категории систем управления контентом (content management system, CMS), которые дают пользователям возможность создания Web-сайтов и управления ими без знания HTML. Ссылки для загрузки некоторых приложений на PHP можно найти в разделе Ресурсы.
Приложения на PHP можно разделить на две категории: работающие с текстовыми файлами и с базами данных. На System I можно с лёгкостью установить и настроить приложения обоих типов. Приложения PHP, работающие с текстовыми файлами, можно устанавливать на платформу System i с движком PHP. Приложения, работающие с базами данных, обычно используют СУБД с открытым исходным кодом MySQL. MySQL можно загрузить из Интернета и установить на System i. Ссылку на тему и пример на форуме сайта Zend Core можно найти в разделе Ресурсы. После установки базы данных MySQL на платформу System i вы можете устанавливать и запускать приложения, использующие базу данных.
К наиболее популярным приложениям с открытым исходным кодом относятся онлайновые-энциклопедии, доски объявлений и онлайновые магазины. Это не единственные доступные приложения с открытым исходным кодом, но они иллюстрируют широту задач, решаемых с помощью PHP.
Онлайн-энциклопедия
Онлайн-энциклопедия (википедия) - это сайт, который даёт пользователям возможность легко и быстро добавлять, удалять и изменять его содержимое. Часто пользователи редактируют содержимое без регистрации и доступа к файлам, расположенным на Web-сервере. Один из примеров онлайн-энциклопедии с открытым исходным кодом, написанной на PHP - PmWiki (см. раздел Ресурсы). Для хранения содержимого сайта в PmWiki вместо базы данных используется система текстовых файлов. После установки среды Zend Core на System i поместите файлы PmWiki в открытую папку Web-сервера Apache. Теперь вы можете настроить энциклопедию с помощью интерфейса PmWiki. Синтаксис изменения страниц представляет собой простое сочетание знаков пунктуации, создающих нужный эффект. Помимо базового редактирования, можно также подключать библиотеки, реализующие расширенные возможности, например, поддержку блогов, обеспечение безопасности, мультимедийные функции.
Доска объявлений
Форумы и доски объявлений дают пользователям возможность задавать вопросы всему миру и получить на них ответы. Система phpBB (PHP Bulletin Board) (см. раздел Ресурсы) поможет вам с лёгкостью разработать приложение доски объявлений. phpBB позволяет создавать форумы, разбивать их на категории, начинать темы, отправлять ответы, а также отправлять групповые и персональные сообщения по электронной почте. Для хранения содержимого сайта и отслеживания действий пользователей в phpBB используется база данных.
Онлайн-магазин
Онлайн-магазины с открытым исходным кодом позволяют компаниям создавать и настраивать собственные сайты электронных продаж. Покупатели могут легко регистрироваться и делать покупки через Интернет. В качестве примера такого приложения можно назвать Zen Cart (см. раздел Ресурсы). В Zen Cart реализовано несколько настраиваемых шаблонов для разработки бизнес-приложений. Удобный графический Web-интерфейс позволяет вносить другие изменения и администрировать приложение. Поскольку электронный магазин должен обеспечивать безопасность своих клиентов, в Zen Cart реализовано использование SSL и цифровых сертификатов. специально для магазина Zen Cart на сервере создаётся локальный сертификат. Клиенты магазина Zen Cart получает и сохраняет сертификат при входе в магазин. И браузер, и сервер используют сертификаты для шифрования и дешифровки передаваемого текста, что даёт пользователям возможность безопасно работать с Zen Cart. Для хранения данных Zen Cart обращается непосредственно к базе данных.
 |
PHP на System i: Вопросы установки и выбора базы данных
При выборе приложения с открытым исходным кодом пользователям System i необходимо рассмотреть ряд вопросов. Первый, и, вероятно, наиболее очевидный вопрос заключается в выборе из множества существующих приложений. Zend Core - это единственный существующий сегодня движок PHP для i5/OS на платформе System i. Прежде чем приступать к установке Zend Core, вам нужно установить 13 лицензионных программ, входящих в состав пакета программного обеспечения System i (см. таблицу 1). Создание среды Zend Core для i5/OS значительно упростило установку PHP на компьютеры System i. Программа установки Zend оснащает платформу System i движком PHP, Web-сервером HTTP Apache, встроенной поддержкой DB2 и графическим Web-интерфейсом управления.
Zend Core является бесплатным лицензируемым продуктом. В ходе установки на System i создаётся файл SAVF и выполняется копирование Zend Core в двоичный файл. В пакете Zend Core, который можно загрузить с сайта компании, содержатся подробные инструкции (см. раздел Ресурсы).
При установке Zend Core настраивается связанный с PHP Web-сервер Apache. Дополнительная настройка среды с лёгкостью выполняется со страницы администрирования графического Web-интерфейса. На сегодняшний день движок Zend PHP поддерживается только на i5/OS версии 5 редакции 4.
Для установки движка Zend PHP на i5/OS необходимы:
- i5/OS версия 5 редакция 4 модификация 0 или выше
- Последняя версия PTF
- Директория /usr/local, поскольку продукт будет устанавливаться в эту директорию путём добавления папки
- Следующие лицензионные программы Zend (проверяются с помощью команды:
go licpgm, опция 10):
Таблица 1. Обязательные условия для установки Zend Core на i5/OS
| Описание | Опция продукта | Лицензионная программа |
|---|
| IBM Portable Utilities for i5/OS | *base | 5733sc1 | | OpenSSH, OpenSST, Zlib | 1 | 5733sc1 | | System Openness Includes | 13 | 5722ss1 | | Qshell | 30 | 5722ss1 | | Portable App Solutions Environment | 33 | 5722ss1 | | Digital Certificate Manager | 34 | 5722ss1 | | CCA Cryptographic Service Provider | 35 | 5722ss1 |
Синтаксис PHP
Синтаксис PHP очень прост и очень похож на синтаксис C и Perl. Работа с математическими и логическими операторами в PHP выполняется так же, как и в языке C. Новые функции в PHP создаются так же, как и в языке Java™. Последние версии PHP являются объектно-ориентированными, как язык Java. К числу отличий относятся:
- Любой код PHP начинается и заканчивается тегом, как в Javascript. Это позволяет встраивать PHP напрямую в код HTML Web-сайтов и приложений.
- Переменные в PHP начинаются со знака доллара ($).
- Типы переменных задаются свободно, и одна и та же переменная может сначала использоваться как целочисленная, а позже как символьная. С одной стороны, это может повысить гибкость использования переменных, с дтак и затруднить их отслеживание.
Листинг 1. Пример использования различных типах переменных в PHP
<?php
$var = 5;
echo '$var';
//$var will print as '5'
$var = 'string';
echo '$var'
//Now, $var will print as 'string' !
?>
|
Лучший способ познакомиться с PHP - посетить сайт ресурсов PHP (см. раздел Ресурсы). На этом сайте полностью представлены синтаксис и функции PHP, а также приведены подробные примеры. Сообщество разработчиков с открытым исходным кодом постоянно дополняет этот сайт, добавляя новые примеры и инструкции.
Соединение с базой данных DB2
Для соединения с базой данных DB2 из PHP можно использовать два типа драйверов. Первый и более старый метод - использование драйвера соединения ODBC. Для соединения с базой данных DB2 через ODBC используется следующий код:
Листинг 2. Соединение ODBC
<?php
$db_host = "server.mynetwork";
$db_user = "dbuser";
$db_pass = "dbpass";
odbc_connect($db_host, $db_user, $db_pass, "SQL_CUR_USE_ODBC");
@odbc_setoption($this->db_connectid, 1, SQL_ATTR_COMMIT, SQL_TXN_NO_COMMIT)
or die('Failed setoption: ' . odbc_error() . ":" . odbc_errormsg());
@odbc_setoption($this->db_connectid, 1, SQL_ATTR_DBC_DEFAULT_LIB, $this->dbname)
or die('Failed select: ' . odbc_error() . ":" . odbc_errormsg());
?>
|
Второй метод соединения с базой данных DB2 состоит в использовании соединения IBM_DB2, пример кода для которого показан ниже. Этот более новый метод помогает решить некоторые проблемы с соединениями, свойственные ODBC, но для соединения с DB2 в PHP годятся оба метода.
Листинг 3. Соединение IBM_DB2
<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
db2_connect($database, $user, $password);
?>
|
Использование схем в DB2
По умолчанию DB2 для i5/OS настроена как единая системная база данных. Логическими контейнерами для связанных объектов базы данных на платформе System i служат схемы. Схема, созданная в DB2, аналогична базе данных в MySQL. Другими словами, схема подобна базе данных MySQL, в которой можно создавать и заполнять таблицы. Схемы в DB2 создаются с помощью запроса CREATE SCHEMA.
Ссылки на данные из базы данных DB2
При указании ссылок на данные базы данных DB2 следует особо учесть некоторые вопросы, в том числе указание названий таблиц, названий столбцов и данных таблиц.
Указание названий таблиц в DB2
Таблицы DB2 в запросах SQL могут задаваться либо неполным именем, либо полным, с указанием названия схемы.
Листинг 4. Пример указания названий таблиц
INSERT INTO table VALUES(val1, val2, … valn);
//MySQL Insert Statement
INSERT INTO table VALUES(val1, val2, … valn);
INSERT INTO schema.table VALUES(val1, val2, … valn);
//DB2 Insert Statements
|
По умолчанию в соединении PHP с базой данных DB2 для i5/OS используется соглашение об именовании SQL. В соглашении об именовании SQL поиск объектов с неполным именем выполняется только в текущей схеме (или схеме, назначенной по умолчанию). Значение текущей схемы, обычно по умолчанию задается равным текущему имени входа в SQL (или имени профиля пользователя). Если мы вошли под именем JOHNDOE и ссылаемся на объект по неполному имени, DB2 для i5/OS предполагает, что объект находится в схеме JOHNDOE. С помощью параметра соединения i5_lib можно указать схему по умолчанию для неполных ссылок этого соединения.
Указание названий столбцов в DB2
Названия полей таблиц в DB2 по умолчанию указываются в верхнем регистре, даже если они были определены в нижнем. Таким образом, при их указании в сценарии PHP необходимо использовать верхний регистр.
Указание данных таблиц в DB2 и доступ к ним
При извлечении данных из таблицы DB2 необходимо учесть, будут ли данные браться из полей (заголовки столбцов) или фактические значения (все данные в столбцах и строках). Названия полей обычно извлекаются как строковые значения. В то же время значения столбцов возвращаются с невидимыми дополнительными символами, например:
Таблица 2. Невидимые дополнительные символы
| Название символа | Символ | Код ASCII |
|---|
| Обычный пробел | " " | ASCII 32 (0x20) | | Табуляция | "\t" | ASCII 9 (0x09) | | Новая строка (перевод строки) | "\n" | ASCII 10 (0x0A) | | Возврат каретки | "\r" | ASCII 13 (0x0D) | | Нулевой байт | "\0" | ASCII 0 (0x00) | | Вертикальная табуляция | "\x0B" | ASCII 11 (0x0B) |
Таким образом, если в коде вам необходимо сослаться на значение данных, рекомендуется использовать функцию, удаляющую дополнительные символы, например, trim().
Перенос приложений PHP с MySQL на DB2
Хотя SQL - это универсальный язык, его использование слегка различается в зависимости от типа базы данных. Большинство приложений PHP работает с базой данных MySQL. MySQL - это система управления базами данных с открытым исходным кодом, которую можно бесплатно загрузить и использовать с множеством приложений PHP, работающих с базой данных. MySQL можно загрузить из Интернета и установить на System i.
Некоторые клиенты System i могут захотеть использовать базу данных DB2 вместо СУБД с открытым исходным кодом MySQL. В этом разделе обсуждаются вопросы переноса приложений PHP с MySQL на DB2. При переносе предложений SQL с MySQL на DB2 существуют различия в синтаксисе и функциях. Некоторые различия перечислены в таблице 3; объяснение этих различий приведено ниже.
Таблица 3. Различия между предложениями MySQL и DB2
| Желаемое действие | Предложение в MySQL | Предложение в DB2 |
|---|
| Вернуть количество строк в таблице | SQL -> LIMIT
| SQL -> FETCH FIRST n ROWS
| | Определить последний созданный ID таблицы после выполнения запроса insert | PHP-> mysql_insert_id
| SQL -> SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1;
| | Показать таблицы | SQL -> SHOW TABLES FROM table_name
| SQL -> SELECT TABLE_NAME FROM schema_name.SYSTABLES WHERE TABLE_NAME=table_name
| | Показать индексы | SQL -> SHOW INDEX FROM table_name
| SQL -> SELECT INDEX_NAME FROM schema_name.SYSINDEXES WHERE TABLE_NAME=table_name
| | Определить количество строк, затронутых предложением SQL | PHP -> mysql_num_rows() для предложений SELECT , mysql_affected_rows() для предложений INSERT, UPDATE, DELETE | PHP -> db2_num_rows() (не работает с предложениями SELECT при использовании неперемещаемого курсора) | | Вставить ключ в таблицу, в которой уже создан первичный ключ | SQL-> IGNORE сбрасывает предложение insert | | | Создать столбец и автоматически задать его значения с автоинкрементом |
auto_increment
|
GENERATED BY DEFAULT AS IDENTITY
| | Добавить escape-последовательность к символу | Добавить косую черту перед символом ('\'), например, "Smith\'s" | Добавить апостроф перед символом, например, "Smith''s" | | Возвратить массив, проиндексированный по названию столбца и позиции, представляющий строку в результирующем множестве |
mysql_fetch_array()
|
db2_fetch_both()
|
Соединение с базой данных
Когда Web-приложения подключаются к базе данных MySQL, они часто используют функцию PHP mysql_connect. Для подключения к DB2 существуют два варианта: odbc_connect и db2_connect (см. раздел Соединение с базой данных DB2). Драйвер ODBC старше, чем драйвер IBM_DB2, но поскольку ODBC используется не только с DB2, в приложениях с открытым исходным кодом чаще используется именно ODBC.
Различия SQL между DB2 и MySQL
Существуют различия в реализации SQL в DB2 и MySQL. К числу таких отличий относятся типы данных, языки определения данных и отображения таблиц.
Различия типов данных между DB2 и MySQL
Часто Web-приложения, использующие базы данных, автоматически формируют сценарии и таблицы для первого использования. В синтаксисе этих сценариев, хотя все они написаны на SQL, имеются некоторые различия, зависящие от базы данных. Например, при переносе приложений с MySQL на DB2 нужно заменить некоторые названия типов данных MySQL на соответствующие названия DB2. В таблице 4 показано несколько примеров такого преобразования.
Таблица 4. Различия в типах данных между MySQL и DB2
| MySQL | DB2 |
|---|
| TINYINT | SMALLINT | | MEDIUMINT | INTEGER | | INT | INTEGER | | TINYTEXT | CLOB(255) |
Различия в языке определения данных
Следующим шагом процесса переноса приложения после изменения всех названий типов данных на синтаксис DB2 будет изменение синтаксиса языка определения данных (DDL) на синтаксис DB2. Изменяется, в частности, следующий синтаксис:
- Предоставление и отзыв привилегий пользователей
- Создание и удаление таблиц, представлений и индексов
- Определение правил ссылочной целостности
Примеры различий показаны в приведенном ниже коде.
Листинг 5. Пример создания таблицы в MySQL
create table myTable (
age int(11) unsigned NOT NULL out_increment,
first_name varchar(10) unsigned default NULL,
last_name varchar(20) unsigned default NULL,
PRIMARY KEY (age)) type-MyIASM;
|
Листинг 6. Пример создания таблицы в DB2
Create table myTable (
age INT NOT NULL GENERATED BY DEFAULT AS IDENTITY,
first_name VARCHAR(10) default NULL
last_name VARCHAR(20) default NULL
PRIMARY KEY (age));
|
Отображение таблиц
Ещё одно различие между DB2 и MySQL состоит в использовании инструкций SHOW TABLES и SHOW INDEX FROM название_таблицы, поддерживаемых MySQL, но отсутствующих в DB2. В DB2 эти запросы нужно заменить запросами SELECT, показанными в таблице 5.
Таблица 5. Вывод баз данных, таблиц и индексов с помощью MySQL и DB2
| MySQL | DB2 |
|---|
| Вывод баз данных | SELECT TABLE_SCHEM FROM SYSIBM.SQLSCHEMAS | | Show tables | SELECT TABLE_NAME FROM SYSTABLES WHERE TABLE_SCHEMA = название_схемы | | Show index from название_таблицы | SELECT INDEX_NAME FROM SYSINDEXES WHERE TABLE_NAME = название_таблицы AND INDEX_SCHEMA = название_схемы |
Escape-коды для символов
Ещё одно отличие между DB2 и MySQL состоит в escape-кодах символов. В MySQL перед символом указывается косая черта ( '\' ). В DB2 перед символом ставится апостроф. Например, если нужно указать в предложении SQL слово " Smith's ", введите " Smith\'s ". Если нужно получить тот же результат в DB2, введите " Smith''s ".
Полезный инструмент
Преобразование этих сценариев вручную может быть достаточно длительным процессом. Впрочем, существуют инструменты, которые помогут преобразовать синтаксис SQL и выполнить перенос базы данных. Например, имеется бесплатный инструментарий IBM DB2 Migration Toolkit (MTK) (см. раздел Ресурсы). На сегодняшний день DB2 MTK поддерживает преобразование баз данных MySQL в синтаксис SQL DB2, но не поддерживает цель DB2 for i5/OS. Готовящаяся версия DB2 MTK поддерживает преобразование синтаксиса SQL MySQL в DB2 для i5/OS. Ссылку на страницу с информацией о последней версии IBM DB2 Migration Toolkit можно найти в разделе Ресурсы. DB2 Migration Toolkit лучше всего подходит для преобразования длинных сценариев SQL. Этот инструмент не предназначен для прямого преобразования предложений SQL, встроенных в код PHP. Однако для упрощения преобразования сложных предложений SQL из MySQL можно копировать отдельные предложения SQL в утилиту DB2 MTK Translator.
Различия в использовании DB2 и MySQL в PHP
В процессе преобразования базы данных MySQL в базу данных DB2 могут возникнуть различия в API. Синтаксис соединения с MySQL не преобразуется напрямую в синтаксис соединения с DB2. Функции, существующие для соединения с MySQL, могут отсутствовать для соединения с DB2, а функции, существующие для соединения с DB2, могут отсутствовать для соединения с MySQL. Часто функции с похожими названиями могут возвращать совершенно разные значения. Более того, функции могут иметь одинаковые названия и возвращать одни и те же значения, но иметь совершенно разный порядок параметров. В число функций, работающих различно в DB2 и MySQL, входят следующие:
- Функция mysql_index_id() возвращает ID, сформированный последним оператором INSERT. В DB2 для получения того же результата используется идентификационный столбец с автоматическим инкрементом и функция IDENTITY_VAL_LOCAL.
- Функция db2_num_rows() возвращает количество строк, затронутых запросом SQL. В DB2 эта функция работает с запросами INSERT, DELETE и UPDATE. Версия MySQL этой функции, mysql_num_rows(), работает только с запросом SELECT.
- Функция db2_fetch_array() возвращает массив, проиндексированный по положению столбца, представляющий строку результирующего множества. Эквивалент этой функции для MySQL, mysql_fetch_array(), возвращает массив, численно проиндексированный по позиции столбца и по названию столбца.
Заключение: Преимущества для малого и среднего бизнеса
PHP на System i предоставляет значительные преимущества для малого и среднего бизнеса. Теперь, познакомившись с историей и типами архитектуры PHP, вы можете загрузить и установить на System i тысячи существующих приложений - либо отдельно, либо вместе с сопутствующей базой данных. При переносе приложений с базы данных MySQL на DB2 необходимо учесть ряд особенностей. Однако наличие новейших недорогих приложений PHP в сочетании с надёжной платформой System i и базой данных DB2 является стратегическим преимуществом для любого растущего бизнеса.
Ресурсы Научиться
Получить продукты и технологии
Обсудить
Об авторах  | |  | Маргарет Мислинска (Margaret Myslinska) проходила стажировку в IBM в качестве инженера-программиста летом 2006 года. На сегодняшний день она закончила обучение в Университете Чикаго в Урбана-Шампейн, штат Иллинойс, США. |
 | |  | Эндрю Нир (Andrew Nere) проходил стажировку в IBM в качестве инженера-программиста летом 2006 года. На сегодняшний день он завершил обучение в Университете штата Миннесота в Сент-Клод, Миннесота, США. |
 | |  | Дэвид Свенсон (David Swenson) проходил стажировку в IBM в качестве инженера-программиста летом 2006 года. На сегодняшний день он завершил обучение в Университете штата Миннесота в Манкато, штат Миннесота, США. |
 | |  | Глория Веласкес (Gloria Velazquez) проходила стажировку в IBM в качестве инженера-программиста летом 2006 года. На сегодняшний день она завершила обучение в Университете штата Техас в Эль-Пасо, штат Техас, США |
 | |  | Кэтрин Лэмонт (Kathryn Lamont) - инженер-программист IBM Software Group. Она работала над созданием команды разработчиков системного продукта IBM WebSphere Process Server for Multiplatforms. Ранее Кэтрин работала над IBM WebSphere Business Integration Server Express for iSeries. Она выступала техническим руководителем проекта "PHP на System i" в ходе летней стажировки 2006 года. Она пришла на работу в группу IBM в Рочестере в 2004 году. Кэтрин окончила Университет штата Айова по специальности "вычислительная техника". С Кэтрин можно связаться по адресу kathrynl@us.ibm.com. |
 | |  | Дэвид Пераса (David Peraza) - инженер-программист в группе IBM Systems and Technology Group. Он работает над интеграцией WebSphere MQ с платформой System i. Он выступал техническим руководителем проекта "PHP на System i" в ходе летней стажировки 2006 года. С Дэвидом можно связаться по адресу dperaza@us.ibm.com. |
Выскажите мнение об этой странице
|  |