Php руководство по рнр 3 0 функции работы с interbase


Содержание

Первое знакомство с функциями php для начинающих

Значение функций для программирования неоценимо. Благодаря им появилась возможность повторного использования кода. Нужно лишь разместить вызов функции в конкретном месте программы, и передать ей новые значения аргументов. Не являются исключением из правил и функции php .

Синтаксис функций в php

В каждом языке программирования работа с функциями имеет свои « тонкости ». Рассмотрим их особенности в php :

  • Определение функции выглядит следующим образом:

Параметры могут быть пустыми. Имя указывается после обязательного слова function . При этом имена функций являются независимыми от регистра.

Это значит, что при объявлении function Main() и function main() подразумевается одна и та же функция. А при вызове одной из них интерпретатор выдаст сообщение об ошибке:

  • В теле функции может находиться любой код. В том числе и определение другой функции. При этом определение может быть расположено в любом месте кода. То есть, в php имеет значение лишь расположение вызова функции;
  • Функция может возвращать лишь одно значение, или ничего. Возврат более одного значения не возможен. При этом тип возвращаемого значения может быть любым.

В результате будет возвращена 1.

Множественную передачу значений можно осуществить при использовании в php массива в функции.
Пример:

В теле функции задаются значения переменным x и y . Затем с помощью встроенной функции array() они записываются в массив.

Значение элементам массива задается при вызове функции с помощь list() .

  • Вызов функции php имеет синтаксис:

Функция вернет 3.

Анонимные функции в php

Анонимные функции в php появились недавно, начиная с версии 5.3 . В более ранних версиях языка их поддержка не была реализована.

Анонимной называется функция, определение которой происходит без указания имени. То есть ее определение происходит в месте вызова. При создании анонимной функции к ней обращаются напрямую, или переменной присваивается ссылка на нее.

Рассмотрим на примерах:

Здесь ссылка на анонимную функцию присваивается переменной func1 . Затем переменная x инициализируется значением func1 и выводится с помощью echo() :

В примере автономная функция function ($v) < return $v >2; > вызывается напрямую в месте определения. Она передается в качестве второго аргумента стандартной функции array_filter() .

Функция mail()

Набор стандартных ( встроенных ) функций в php довольно широк. Многие из них реализуют основные возможности веб-сферы.

Одной из таких является функция mail() . Она отправляет сообщение на указанный почтовый ящик. Ее синтаксис:

Описание принимаемых параметров:

  • to –адрес получателя письма. Должен соответствовать стандарту user@example.com ;
  • subject – тема письма;
  • message – отправляемое сообщение. При этом каждая строка сообщения должна вмещать в себя не более 70 символов. Строки разделяются символом перевода строки ( n ).

Если отправка письма происходит непосредственно на SMTP -сервер с машины на основе Windows , то все точки в конце каждой строки будут удалены. Во избежание этого следует заменить все одиночные точки на двойные с помощью кода:

Необязательные параметры функции mail() :

  • additional_headers – вставляется в конце заголовков отправляемого письма. Используется для добавления заголовков.

Пример отправки простого письма:

А вот пример полностью рабочей формы для отправки сообщений:

Несколько основных причин, почему письмо не отправляется:

  • Письмо не содержит дополнительного заголовка From . Он устанавливается с помощью необязательного параметра additional_headers . Также он может быть выключен по умолчанию в конфигурационном файле php.ini . Если заголовок отсутствует в коде, то интерпретатор выдаст следующее сообщение:
  • Используйте только LF (n) . Некоторые агенты на основе Unix автоматические заменяют LF на CRLF (rn) ;
  • При реализации функции mail() на Windows адрес получателя не должен быть такого вида: Something someone@example.com.

Может произойти неправильная интерпретация параметра при передаче его почтовому агенту для отправки.

  • Сбои в отправке писем могут возникнуть при размещении вызова mail() в теле цикла. Функция открывает и закрывает соединение с SMTP -сервером после отправки каждого письма.

Обзор стандартных функций php

В стандартный набор php входит большой комплект функций для работы со строками. Подробно рассмотрим несколько из них:

  • 1) substr() – возвращает часть строки. Синтаксис: string substr(string string, int start[, int length]) , где:
  • string string – заданная строка.
  • int start – задает начало подстроки.
  • int length – количество символов в возвращаемой подстроке.
  • 2) strpos() – возвращает позицию подстроки в заданной строке. С помощью необязательного параметра можно задать точку отсчета для поиска. Синтаксис: string strpos(string haystack, string needle[, int offset])

3) strstr() – возвращает подстроку из строки, начиная с указанного символа. Синтаксис: string
strstr(string haystack, string needle)

Функции работы с массивами:

1. count() – возвращает количество элементов в массиве. Синтаксис: int count(mixed var)

2. reset() – устанавливает указатель массива на первый элемент, возвращает его значение.
Синтаксис: reset(array array)
Пример:

3. sort() – сортирует массив по возрастанию. Функция воспринимает любой массив как список. Синтаксис: void sort(array array [, int sort_flags])

В языке PHP существует много функций для работы с датой и временем. Но функция date () в php является основной. Она возвращает строку, отформатированную согласно установленному шаблону format . Временная метка устанавливается аргументом timestamp . Ее синтаксис: string date ( string $format [, int $timestamp = time() ] )

Более подробно обо всех принимаемых значениях аргументов функции можно узнать из документации к php.

Несколько стандартных математических функций:

1. bindec() – преобразует число двоичной системы исчисления в десятичное. Синтаксис: bindec ( string $binary_string )

2. floor() – округляет число до меньшего. Синтаксис: float floor (float $value )

3. rand() –генерирует случайное число из указанного диапазона. Синтаксис: int rand ( int $min , int $max )

Одна ложка меда из бочки

Описанные функции php всего лишь ложка меда из огромной бочки волшебства этого языка. Самые вкусные функции распробуйте самостоятельно.

Установка INTERBASE (FIREBIRD)

15.03.2012, 16:54

FireBird + Interbase&Firebird Development Studio
Установил FireBird 2.5 SuperClassic и Interbase&Firebird Development Studio. Зашел в студию.

Разбиение строки в FireBird — Firebird/InterBase
Продолжая тему отсюда: http://www.cyberforum.ru/firebird/thread309236.html :wall: Есть поле типа.

Interbase (не firebird) в Python
Доброго времени суток, как подключить Interbase (не firebird) в Python . Существует ли вообще.

Firebird или InterBase ?!
Всем доброго времени суток, ребята столкнулся с такой проблемой. Как подключиться к базе данных.

Firebird конфликт с interbase
Добрый день. вот такая незадача. ранее уставновила interbase, затем удалила и забыла про него.

15.03.2012, 19:28 2

Установить Linux в VirtualBox
sudo apt-get install php5-firebird firebird2.5-super
sudo dpkg-reconfigure firebird2.5-super
пароль: masterkey

Под виндой у меня тоже не завелось.
Кстати не gds32.dll, а fbclient.dll(и попробуй переименовать его в gds32.dll)
Мое мнение — косяк с дистрибутивом PHP(вероятно модуль скомпилирован под другую версию dll).

На будущее: всегда проще и удобнее использовать виртуалку с линуксом.

Php руководство по рнр 3 0 функции работы с interbase

Естественно все работает при запущенной базе. Статус — запущенна или нет появляется в панели управления. В общем, все как надо.
База должна быть запущенна, естественно.
До того как писать, посетил сайт www.php.net и провел жуткую штуку. Попросил его вывести все функции типа interbase, ibase, dbase. На второй получил ссылку http://www.php.net/manual/ru/ref.ibase.php сюда. И тут все функции для работы с InterBase в php. Вот так.

А затем мне прислали базу данных, которую я подключил к InterBase и теперь могу с ней работать. Вот так

Вот такой вот мой код, который работает с таблицами бд InterBase:

crazy | logix [news]

«);
$host = ‘localhost:e:/Firebird/bin/AVS.GDB’;
$username = ‘SYSDBA’;
$password = ‘masterkey’;
$dbh = ibase_connect($host, $username, $password);

if ($show == true)
<
if ($select == «cars»)
<
$stmt = «SELECT * FROM CARS»;
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth))
<
echo ($row->ID.»::».$row->NUMBER.»::».$row->NAME.»::».$row->COLOUR.»
\n»);
>;
>
else if ($select == «clients»)
<
$stmt = «SELECT * FROM CLIENTS»;
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth))
<
echo ($row->ID.»::».$row->NAME.»::».$row->ADDRESS.»::».$row->PHONES.»::».$row->SUM_SPENT.»::».$row->NUM_OF_ADDRESS.»::».$row->LAST_CAR_ID.»::».$row->DELETED.»
\n»);
>;
>
else if ($select == «orders»)
<
$stmt = «SELECT * FROM ORDERS»;
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth))
<
echo ($row->ID.»::».$row->ID_CLIENT.»::».$row->ID_CAR.»::».$row->ID_REASON.»::».$row->TYPE.»::».$row->TAX_FLAG.»::».$row->DATE_OF_ORDER.»::».$row->SUMM.»::».$row->CHECK_PRINTED.»::».$row->DOLLAR_RATE.»
\n»);
>;
>
else if ($select == «orders_workers»)
<
$stmt = «SELECT * FROM ORDERS_WORKERS»;
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth))
<
echo ($row->ID.»::».$row->ID_ORDER.»::».$row->ID_WORKER.»
\n»);
>;
>
else if ($select == «pos»)
<
$stmt = «SELECT * FROM POS»;
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth))
<
echo ($row->ID.»::».$row->ID_ORDER.»::».$row->NAME.»::».$row->PRICE.»::».$row->NUMBER.»::».$row->DISCOUNT.»::».$row->HOURS.»::».$row->COST_PER_HOUR.»
\n»);
>;
>
else if ($select == «reasons»)
<
$stmt = «SELECT * FROM REASONS»;
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth))
<
echo ($row->ID.»::».$row->NAME.»::».$row->TYPE.»::».$row->DELETED.»
\n»);
>;
>
else if ($select == «services»)
<
$stmt = «SELECT * FROM SERVICES»;
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth))
<
echo ($row->ID.»::».$row->ID_HIGH.»::».$row->NAME.»::».$row->LAST_PRICE.»::».$row->COST_PER_HOUR.»::».$row->HOURS.»
\n»);
>;
>

else if ($select == «wares»)
<
$stmt = «SELECT * FROM WARES»;
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth))
<
echo ($row->ID.»::».$row->NAME.»::».$row->LAST_PRICE.»
\n»);
>;
>
else if ($select == «workers»)
<
$stmt = «SELECT * FROM WORKERS»;
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth))
<
echo ($row->ID.»::».$row->NAME.»::».$row->DELETED.»
\n»);
>;
>
else
<
echo(«table not found»);
>
ibase_free_result($sth);
ibase_close($dbh);
>
else
<
echo(«

Php руководство по рнр 3 0 функции работы с interbase

Если кто-нибудь пытался искать информацию, как работать с базами данных в PHP, то как правило, натыкалася на работу PHP с MySQL. По поводу же работы с Interbase информация достаточно скудная. Более того, как правило, поисковики выкидывают информацию не по работе PHP с Interbase, а по работе Delphi с Interbase :).

Илон Маск рекомендует:  Что такое код randbwr

Теперь рассмотрим основные операторы:
// Подключение к базе данных Interbase
$conn=ibase_connect($dbname,$dbuser,$dbpass);

// Выполнение SQL-запроса и получение информации из него (аналогично, как в MySQL):
$stmt = ‘select * from GET_ZAKAZID’;
$sth = ibase_query($conn, $stmt);
while ($row = ibase_fetch_object($sth)) <
$zakazn=$row->DOCN_RETURN;
>
ibase_free_result($sth); // Освобождаем ресурсы, после получения необходимых данных

// Выполнение простой вставки с помощью INSERT
$stmt = ‘INSERT INTO ZAKAZ(ZAKAZID, ZAKAZNA, TYPEZAKAZID’
.’,EMAIL, KONT_TELEPHONE, MTELEPHONE, ICQ’
.’) VALUES (‘
.$zakazn.»,’».trim(strip_tags(@$_POST[‘date_vipoln’])).»‘,».@$_POST[‘type_cli’] .»,’».trim(strip_tags(@$_POST[’email’])).»‘,’».trim(strip_tags(@$_POST[‘telephone’])) .»‘,’».trim(strip_tags(@$_POST[‘mtelephone’])).»‘,».trim(strip_tags(@$_POST[‘icq’]))
.»)»;
$sth = ibase_query($conn, $stmt) or die(ibase_errmsg());

// Закрываем коннект, после работы с базой данных
ibase_close($conn);

not only Технические заметки

четверг, 3 ноября 2011 г.

Мини-гайд по подключению базы Firebird к php

«C:\Program Files\NV >(жирным выделено то, что мы добавили) .

Жмем ОК и перезагружаем компьютер, чтобы применить данные настройки. Добавлять каталог в переменную PATH необходимо для того, чтобы не засорять системную папку «C:/Windows» левыми dll-ками.
После этого нам необходимо скачать файл «gds32.dll» и взять файл «fbclient.dll» из папки с установленным Firebird. Оба этих файла необходимо закинуть в папку с установленным php.

Чем все заканчивается.
Все, перезапускаем Апач и все должно заработать. Если все же не работает, значит смотрите логи и ищите причину проблемы.
Ну и теперь, чтобы подключиться к базе, пишем:

$con = ibase_connect(«192.168.210.50:c:\database\INFDATA.DAT»,»login»,»password»); //В моем случае база лежала не на локальном компе, поэтому прописывается вот такой путь.

Это пример подключения и простейшего запроса из базы данных. Все возможные функции для работы с базами данных Firebird и Interbase с описаниями есть здесь.

Ну, собственно, самая основная информация по данной теме предоставлена, остальное на самостоятельное изучение.

Надеюсь приведенная информация кому-нибудь когда-нибудь пригодилась. :)

Установка InterBase и Firebird вручную

KDV, 14.09.2005, 25.11.2006, 25.09.2007, 08.05.2008, 20.05.2008, 20.01.2009, 05.09.2011, 28.02.2012, 15.11.2014, 09.11.2020.

В этой статье пойдет речь об установке InterBase и Firebird на Windows, заранее приношу извинения пользователям Unix. Тем не менее, пользователи Unix могут извлечь для себя полезную информацию из этой статьи.

Кому будет полезна эта статья:

  • тем, кто хочет научиться устанавливать InterBase или Firebird в тех случаях, когда нет инсталлятора под рукой,
  • тем, кто хочет восстановить «убитую» инсталляцию конкретной версии InterBase/Firebird, которая пострадала из-за установки другой версии,
  • тем, кто хочет работать (одновременно или попеременно) с разными версиями этих серверов на одном компьютере,
  • тем, кто хочет узнать, что же именно на самом деле происходит при установке InterBase и Firebird.

Содержание

  • Из каких файлов состоит сервер
  • Установка вручную
    • установка сервера
    • установка только клиентской части
      • 32 и 64 бита
    • запуск сервиса
  • Установка или обновление «поверх»
  • Установка серверов «рядом» и поочередный запуск
  • Одновременный запуск
  • Firebird 2.x, поочередный и одновременный запуск

Важные файлы

Все остальное – лишнее, то есть серверу для работы не нужно. Однако разумеется, в новых версиях серверов могут появиться какие-либо файлы, жизненно необходимые для их работы. Эти файлы можно определить экспериментально.

Ручная установка

И правда, в каталоге bin есть утилита instreg.exe . Она прописывает необходимую информацию в реестр Windows, указывая умолчательное расположение остальных файлов сервера. В версии Firebird 1.5 и выше указывать путь к корневому каталогу не нужно, утилита сама «соображает» откуда она запущена, и прописывает в реестр правильную информацию. Для InterBase путь указывать нужно, более того, для 7.5 и выше нужно указывать еще и дополнительно имя порта (instance gds_db), т. к. при помощи этого параметра обеспечивается возможность независимой установки нескольких независимых экземпляров InterBase на одном компьютере. Не надо только копировать instreg куда попало и пытаться зарегистрировать сервер оттуда.

У instreg могут быть дополнительные параметры, они не важны, и вы можете увидеть их если запустите instreg без параметров (это безопасно, instreg выводит только информацию о параметрах).

Конечно, имя сервера может быть другим. Для Firebird это fbserver (SuperServer) и fb_inet_server (Classic), главное чтобы вы поняли идею. Сразу после указанной команды вы увидите иконку сервера в TaskBar, и сервер почти готов к работе.

В отношении InterBase подобный запуск полезен тем, что в случае отсутствия файла лицензии можно увидеть ошибку «License file is missing or corrupt» (в отличие от «приложения» сервис сообщит об этом только в interbase.log , а его еще надо открыть и посмотреть). Также, в taskbar-меню запущенного как приложение InterBase можно увидеть (в Properties) установленные лицензии.

  • рантаймы VC 7.1 (VS2003) и VS 6 мне на сайте microsoft.com обнаружить не удалось

Кроме сервера, возможно, вам потребуется обеспечить работу клиентских приложений на этом же компьютере. Для этого приложениям чаще всего (исторически) нужна клиентская часть – gds32.dll . Эта библиотека находится в том же подкаталоге bin. И ее ( gds32.dll ) нужно скопировать в каталог, где клиентские приложения могут ее находить. Если приложение всего одно, то gds32.dll можно положить прямо в каталог приложения. Если приложений несколько, то gds32.dll нужно поместить в PATH. Проще всего gds32.dll скопировать в системный каталог Windows ( C:\Windows , C:\WinNT , C:\WinXP или как там у вас).


У Firebird 1.5 и выше название библиотеки клиентской части отличается от остальных версий InterBase и Firebird 1.0. Вместо gds32.dll есть fbclient.dll . Этот файл можно переименовать в gds32.dll , однако при этом есть риск, что не заработают или будут работать «криво» приложения или компоненты, которые ориентируются на версию gds32.dll (например, может не работать services api). Специальная утилита instclient.exe (см. дальше) позволяет сделать из fbclient.dll файл gds32.dll с правильной версией (6.3).

Проверьте теперь работу клиентских приложений с этим сервером. Работают? Ну и хорошо. Не работают? Тогда вам придется искать ответ чуть дальше, или в другой статье.

Только клиентская часть

  • позволяет проверить наличие установленной библиотеки fbclient или gds32
  • позволяет удалить уже установленный в системе fbclient или gds32.

Ряд программ (компоненты IBX в Delphi, PHP, . ) требуют для работы не просто gds32.dll , но и проверяют версию этой библиотеки. Именно поэтому простое переименовывание fbclient.dll в gds32.dll для таких программ работать не будет – версия библиотеки окажется ниже 6.0 (т.к. соответствует версии Firebird, у которого нумерация версий идет с 1.0). instclient как раз и прописывает корректную версию в создаваемый gds32.dll.

Помните, что gds32.dll от всех версий InterBase требует наличия в файле services записи

то есть, клиент обращается к серверу только по имени порта, а не по номеру. Клиент Firebird не требует данной настройки начиная с версии Firebird 1.0. Теоретически можно использовать клиентскую часть от Firebird для работы с сервером InterBase, если вы не хотите редактировать файл services. Однако это крайне не рекомендуется, особенно в отношении самых последних версий InterBase и Firebird (несовместимость в протоколах).

Если устанавливать клиентскую часть InterBase стандартным инсталлятором (включая опцию Silent Install), то инсталлятор самостоятельно прописывает нужную строку. Однако, если на компьютере производятся манипуляции с поддержкой tcp, например удаление протокола и его повторная установка, то файл services при переустановке протокола будет заменен на новый, и клиент InterBase перестанет обращаться к серверу. Проблему придется исправлять повторным прописыванием указанной строки в services. Причем, если такая строка является последней в файле services, то необходимо добавить в конец файла пустую строку, иначе подсистема tcp не обнаружит эту запись.

32 и 64 бита

а не о том, что разрядность dll не та.

Еще путаница может произойти с драйверами типа ODBC. Если вы используете 64-разрядную Windows, то в настройках ODBC будут показываться по умолчанию только 64-разрядные драйверы ODBC. Соответственно, для их использования должен быть установлен 64-разрядный клиент InterBase или Firebird, и приложение тоже должно быть 64-разрядным.

Для работы 32-разрядных приложений с InterBase/Firebird должен быть установлен 32-разрядный ODBC драйвер (о вызове настроек 32-разрядных ODBC-драйверов под 64-разрядной ОС написано тут) и 32-разрядный клиент.

Как уже говорилось выше, 32-разрядный клиент может работать с сервером любой разрядности – 32-бит или 64-бит.
Проще говоря

  • разрядность операционной системы определяет возможность использования сервера и клиента конкретной разрядности — на ОС 64бит можно использовать сервер и клиент 32бит или 64бит, на ОС 32бит — сервер и клиент только 32бит.
  • Разрядность сервера Firebird или InterBase для клиента не имеет никакого значения
  • Разрядность клиентских библиотек должна соответствовать разрядности приложения. Например, приложение 32бит — значит клиент 32бит (или ODBC 32бит + клиент 32бит, и так далее).
  • Приложение с разрядностью 32бит не может работать с клиентом 64бит, и наоборот.

Совместимость клиентских частей между Firebird и InterBase

Запуск сервиса (службы)

Утилита instsvc.exe записывает, удаляет или меняет информацию о запуске сервера в базе сервисов операционной системы. После этой команды, открыв список сервисов, вы обнаружите там InterBase или Firebird. Некоторые могут спросить – а где guardian? Дело в том, что специальный сервис, который бы в случае сбоя сервера мог его перезапускать, не нужен в Windows 2000 и 2003 – эта функциональность отлично настраивается в свойствах сервиса, на закладке Recovery.

Настройте сервис так, как вам нужно – автоматический или ручной запуск, и т.п. Можете его стартовать прямо сейчас, только нужно завершить работу сервера в виде приложения (на иконке в Taskbar нажать правую кнопку, выбрать меню shutdown).

Точно так же как и instreg утилита instsvc без параметров показывает все свои возможные параметры. Кроме того, этой утилитой можно управлять запуском и остановкой сервера-сервиса.

Для Firebird требуется специальное указание instsvc, если вы инсталлируете >fb_inet_server.exe ) – ключ -с . По умолчанию регистрируется сервис суперсервера ( fbserver.exe ).

Также, Firebird 2.1 и выше имеет у instsvc опцию -n[ame instance], которая позволяет регистрировать как сервис несколько разных экземпляров серверов (как одной, так и разных версий). Без этой опции Firebird разных версий используют одно и то же имя сервиса – «Firebird Server – DefaultInstance», и в этом случае работать будет только тот сервис, который запустился первым.

У InterBase опция имени сервиса чуть иная – instance [instance_name] , где instance_name должно совпадать с именем instance, указанного при регистрации сервиса утилитой instreg (см. выше).

После установки сервиса рекомендуется проверить, установлена ли галочка Allow service interact with desktop в свойствах сервиса. Если нет, то может не работать «локальный» коннект – дело в том, что только в последних версиях Yaffil и Firebird протокол локального коннекта изменен (и например, для >– забудьте про него и используйте протокол tcp, например localhost:c:\dir\data.gdb. Все это уже давно описано в FAQ.

Установка или обновление «поверх»

Самое первое и главное правило – это перед подобными действиями скопировать куда-нибудь весь корневой каталог существующей установки сервера. В случае чего вы сможете удалить неудачный эксперимент, и вернуть весь каталог сервера в его исходном виде обратно. Этим вы избавите себя от необходимости переустановки сервера в случае проблем или неверных действий.

Для Firebird новые версии всегда выпускаются в двух вариантах – как инсталлятор, и как набор файлов. Инсталлятор нас в данном случае не интересует, а вот набор файлов – то что нужно. Это zip, содержащий внутри как раз корневой каталог новой версии сервера!

При его распаковке нужно быть внимательным:

  1. zip содержит подкаталоги, поэтому нужно распаковывать файл с опцией Use folder names, причем не сразу в каталог установки, а в какой-нибудь временный каталог, откуда нужные файлы уже можно перенести в каталог установленного сервера;
  2. zip содержит файл конфигурации ( firebird.conf/aliases.conf или ibconfig ) и файл базы пользователей ( security.fdb , admin.ib или isc4.gdb ). Переписав эти файлы поверх ваших текущих вы лишитесь не только сделанных настроек, но и списка пользователей сервера. Поэтому эти файлы желательно сразу удалить во временном каталоге, куда вы распаковали zip следуя указаниям в пункте 1.

Теперь можно просто весь корневой каталог новой версии скопировать поверх существующего корневого каталога установленного сервера. Если сервер в этот момент запущен, то разумеется, переписать ibserver.exe , fbserver.exe , firebird.exe или fb_inet_server.exe не удастся. Остановите сервер, и перепишите файлы.

Далее, после переписывания новых файлов имеет смысл скопировать новую gds32.dll/fbclient.dll в системный каталог, для того чтобы клиентская часть, используемая приложениями, точно соответствовала версии сервера.

Для InterBase действия немного отличаются, т. к. Borland в последнее время выпускает обновления только в виде полных дистрибутивов. Увы, даже для обновления InterBase 7.5.0 на 7.5.1 вам придется качать с embarcadero.com дистрибутив размером

60 мегабайт (обновление 7.5.1 SP1 содержит только файлы, и может быть легко установлено «поверх»).

Скачали? Теперь выясните, где в вашей текущей операционной системе находится каталог TEMP. Это можно сделать в том же самом окне cmd, откуда производился запуск insreg и других утилит. Выдайте команду

и операционная система вам покажет его расположение. Теперь, зная имя каталога, зайдите туда обычным Проводником (Explorer) и удалите все старые файлы и остатки от прошлых инсталляций другого ПО. Каталог temp нам нужен чистым (все файлы удалить не удастся, т.к. наверняка будут такие, которые открыты запущенными в данный момент приложеняими. Это не помешает).

Запустите инсталлятор – нужен ib_install.exe , то есть инсталлятор на Java. Инсталлятор install_windows.exe , находящийся в корне установки InterBase может запустить win32- или java-инсталлятор в зависимости от версии 7.1, 7.5 или 7.5.1. В дистрибутиве java-инсталлятор можно найти в папке \Disk1\InstData\Windows\VM . Если у вас ничего кроме win32-инсталлятора нет, то определять, какие файлы куда он записывает, можно только с помощью FileMon (sysinternals.com).

Запустили инсталлятор? Жмите смело Install Borland InterBase 7.5 – в этот момент инсталлятор распакует нужные файлы в temp, мы их скопируем, а саму инсталляцию производить не будем.

Итак, в TEMP у нас образовался каталог I1126692368 (у вас может быть любое другое имя). В нем находятся подкаталоги InstallerData и Windows. Нас интересует InstallerData/Disk1/InstData . Там находится файл Resource1.zip . Собственно, при других именах каталогов или файлов описываемый метод позволяет примерно на 90% обеспечить успешный результат.

Открываем файл Resource1.zip . А еще лучше его скопировать куда-нибудь, распаковать (с подкаталогами. ), а инсталлятору InterBase 7.5 сказать Cancel и закрыть его.

Теперь смотрите в каталоги, распакованные из Resource1.zip – здесь как раз все то, что нам нужно для «обновления поверх». C_\IB7.5\win32\Server . Не забудьте про admin.ib и ibconfig – лучше их сотрите в этом каталоге, чтобы случайно не переписать аналогичные файлы в вашей текущей установке.

Поскольку лицензионная информация для этого сервера не менялась, сервер остается работоспособным без необходимости его переустановки.

Еще раз обращаю внимание на необходимость копирования исходного каталога сервера перед всеми этими действиями. Только так вы сможете вернуть серверу работоспособное состояние в случае ошибки.

Установка серверов «рядом» и поочередный запуск

Изложенный выше вариант годится, если вам надо на конкретном сервере действительно обновить его версию, и все. Разумеется, речь идет об обновлении так называемых «минорных» версий, а не Firebird 1.0 «довести» до Firebird 1.5, или InterBase 7.0 обновить до InterBase 7.5.

Например, у InterBase 7.0 и 7.5 разные лицензии, и безусловно, разная функциональность. У Firebird 1.0 файл конфигурации называется ibconfig, а у FB 1.5 – firebird.conf , отличаются файлы пользователей, и тоже разная функциональность. Кроме того, может элементарно потребоваться проверка новой версии сервера – как она вообще работает, и есть ли смысл обновлять даже InterBase 7.5.0 до 7.5.1 (сразу скажу – смысл ЕСТЬ)? А если работа идет на Firebird 1.5 и хочется посмотреть на InterBase 7.5.1 на этой же машине?

В этом случае вам нужно устанавливать серверы рядом, то есть «параллельно». Стандартные инсталляторы в силу исторических причин могут «перебивать» друг друга, а даже если сервера и отличаются как Firebird 1.5 от InterBase 7.5, запустить их одновременно не получится (потому что они слушают по умолчанию один и тот же порт tcp). Так что без ручных манипуляций не обойтись.

Допустим, на сервере установлен Firebird 1.5 (или мы устанавливаем его первым, не важно). Надо установить InterBase 7.5, и работать с ними поочередно (можно и параллельно). Последовательность действий следующая:

  1. Останавливаем текущий сервер (как приложение или сервис), и убираем в конфигурации сервисов его старт как «автоматический» (меняем на «ручной»).
  2. Устанавливаем InterBase 7.5 в отдельный каталог (например, C:\IB75 ), как положено, триальную версию или полную с лицензиями.
  3. Останавливаем сервис InterBase, как и в пункте 1.

Теперь на компьютере 2 сервера, причем «центральной точкой входа» у них является gds32.dll , не так ли?

Значит для запуска того или иного сервера нам нужно проделывать следующие действия:

  • разрегистрировать в реестре сервер, который установлен в данный момент
  • это делается при помощи команды instreg remove
  • зарегистрировать в реестре сервер, который нам нужен для работы
  • это делается при помощи команды instreg install
  • переписать правильный gds32.dll в системный каталог.

Автоматизировать данные действия можно при помощи cmd-файлов. Вот пример файлов, используемых у меня на компьютере

Как видите, параллельно сосуществуют InterBase 7.1, 7.5, 2007, 2009, Yaffil, Firebird 1.0, 1.5, 2.0, 2.5. Для всех сделаны такие же cmd-файлы. Раньше, правда, было еще хуже, т. к. в каталоге d:\intrbase\bin находятся порядка 15-ти разных версий ibserver.exe (в том числе и от IB 6.0, для технических целей). И запуск нужной версии был сделан как параметр, а файлы именовались ibserver_6010, ibserver_6016, 6505 и т.п. (в загашнике есть еще «неавтоматизированные» версии InterBase 4.0/4.1/4.2).

То есть, путем несложных манипуляций можно организовать попеременный запуск любых серверов на одном компьютере. Поскольку в данном случае надо четко видеть, какая именно версия interbase или firebird запущена, то никакая инсталляция или запуск сервера как сервиса не производится (в скрипте видите instsvc? нет). Версию сервера можно увидеть наведя мышь на иконку сервера в TaskBar.

Будьте предельно внимательны при поочередной работе с серверами. Вы можете открыть базу «не тем сервером», в результате чего или база будет обновлена до недопустимой версии ODS, или вы испортите метаданные (несовместимый blr).

Возвращаемся к gds32.dll . В примере командного файла нет команды copy, которая бы копировала правильный gds32.dll в системный каталог. Дело в том, что, как правило, на компьютере разработчика в момент смены сервера уже запущены программы, загрузившие gds32.dll . Тогда их придется выгружать, заменять файл, и загружать снова. Чтобы этого не делать, можно

  • если вся работа идет в IBExpert – для каждого алиаса БД указать свою (правильный) клиентскую библиотеку (см. настройки алиаса БД);
  • если выработать привычку к своим базам всегда коннектиться через localhost, а не через «локальный протокол», то смена gds32.dll может потребоваться только при серъезных отличиях между версиями. К примеру, gds32.dll от InterBase 7.5 прекрасно работает с Firebird 1.5 и 1.0, но gds32.dll от InterBase 2007 уже не работает с сервером Firebird 1.5 (выдает connection rejected by remote interface);
  • конкретному приложению «подложить» рядом правильную gds32.dll .

Одновременный запуск

У InterBase и Firebird после установки есть

  • каталог по умолчанию, прописываемый в реестре (instreg),
  • файл конфигурации, находящийся в каталоге по умолчанию,
  • именованные системные объекты (мютексы и т. п.) которые сервер использует при своей работе.

Если перечисленные 3 пункта не конфликтуют между собой у двух отдельно взятых серверов, то их можно запустить одновременно на одном компьютере. Кроме того, Firebird 1.5 и InterBase 7.5 могут быть сконфигурированы так, что две этих версии могут быть запущены одновременно, в любом количестве их воплощений.

Зачем это может понадобиться? Вариантов много. У вас может быть «старая» задача, которую нецелесообразно или сложно переводить на новый сервер, и одновременно «новая» задача, которую нужно реализовать на новой версии сервера. Могут быть две базы, к которым надо давать доступ через свой экземпляр сервера, для повышения надежности. И так далее.

Для обоих серверов (и между собой) для осуществления одновременного запуска нужно соблюдать некоторые правила.

Основное правило – это разведение серверов по разным портам tcp. Для старых серверов InterBase 6.0 и ниже изменить порт сервера можно только при помощи модификации записи gds_db в файле SERVICES. Причем для их же клиента изменить номер порта для соединения с сервером можно только таким же способом. Клиент Firebird 1.0 и выше – напротив, позволяет указать номер порта в строке коннекта с сервером. Для InterBase 7.5 придется конфигурировать SERVICES, добавляя альтернативные строки gds_db – в этой версии серверу можно указать, какое имя порта (не номер) использовать для работы. Сервер Firebird 1.5 позволяет указать номер порта tcp в конфигурационном файле. Таблица совместимости, то есть возможности одновременного запуска, выглядит так:

InterBase Firebird 1.5 InterBase 7.5- XE7 Firebird 2.x
InterBase firebird.conf , ищем параметр CreateInternalWindow (только в FB 1.5). Его надо установить в 0.

Не забудьте, что символ # в файле конфигурации – это символ комментария. И для того, чтобы изменение параметра вступило в силу, его надо раскомментировать, то есть убрать # перед параметром.

RemoteServiceName – Firebird-у как таковому уже давно (с версии 1.0) для работы клиента или сервера не требуется наличие записи gds_db в файле SERVICES операционной системы. Вы и так можете указать нужное имя порта в строке коннекта.

RemoteServicePort – по умолчанию 3050. То есть, основной сервер будет слушать этот порт, а альтернативный сервер – какой-нибудь другой. Например 3100. Меняем параметр, и для всех приложений, которым надо присоединиться к этому, к имени сервера добавляем /3100. Отдельно имя сервера будет выглядеть так:

и сервер будет слушать порт 3070, а не 3050 по умолчанию.

RemoteAuxPort – это номер порта, по которому идут события (регистрируемые компонентами вроде IBEventAlerter). Если события используются, то порт надо указать явно. Главное – не забудьте открыть этот порт в Firewall, если таковой есть у вас на сервере (и где уже открыт порт 3050, и где будет открыт порт 3100 из предыдущего примера). Выбрать надо что-нибудь не конфликтующее с работающими приложениями. Помочь может утилита tcpview опять же с www.sysinternals.com.

На этом этапе все Ok. Теперь, если речь идет об установке двух Firebird 1.5, то сложным моментом является идентичность имен сервисов и ключей в реестре, которые прописывают instreg и instsvc. Информацию instreg надо убрать (instreg remove), и придется самостоятельно создавать альтернативный сервис в базе сервиса. Сделать это можно используя примеры программ управления сервисами из командной строки и интерактивного.

InterBase 7.5 и выше

С версии 7.5 появился режим запуска Muti-Instance, то есть возможность стартовать одновременно несколько экземпляров сервера на одной машине. Однако, Borland внедрил в клиентскую часть возможность добавления не номера порта к имени сервера, а добавление имени порта, что в определенном смысле усложняет конфигурирование одновременного запуска. Кроме того, при инсталляции сразу должна быть указана возможность использования режима Milti-Instance, как для первой установки так и для остальных.

Подробно настройки Multi-instance описаны в OpGu >admin.ib . Таблица маршрутизации настраивается для сервера, который «слушает» базовый порт gds_db 3050. Именно он будет переадресовывать запросы к указанным в таблице базам на другой сервер, прослушивающий другой порт. Это позволяет избавиться от редактирования файла services, и направлять «старых» клиентов на нужный экземпляр сервера.

  • дополнительная таблица DB_ALIAS в admin.ib позволяет создавать алиасы баз данных (как в Firebird 1.5, aliases.conf ). Алиасы управляются или напрямую редактированием этой таблицы, или ключами -alias_* утилиты gsec.
  • Firebird 2.x, поочередный и одновременный запуск

    В Firebird 2.x изменилась схема аутентификации пользователей. Собственно, с внешней стороны все осталось как было, но

    • новая база пользователей и паролей называется security2.fdb ,
    • сервер запрещает подсоединение к security2.fdb .

    Кроме этого, шифрование паролей в security2.fdb при включении параметра LegacyHash 0 производится MD5, а не DES, как это было во всех версиях IB/FB. По умолчанию используется совместимый способ (DES).

    Тем не менее, при установке вручную нет никаких проблем, так же как и с параллельной установкой и запуском серверов других версий. Использовать instreg, записывающий путь к серверу в реестр, категорически нельзя, это было описано выше.

    Например, вполне успешно работает одновременный запуск FB 1.5 и 2.0 в конфигурации

    • Firebird 1.5, без изменений в firebird.conf ,
    • Firebird 2.0, в firebird.conf RemoteServicePort изменен на 3070.

    Теперь вы знаете практически все тонкости ручной установки InterBase и Firebird. В статье опущен ряд подробностей, например, ключи реестра, которые прописывает instreg – оставлю это в виде «домашнего задания», тем более что на www.sysinternals.com есть утилита regmon, которая очень похожа на filemon, уже упомянутый в этой статье. Также пропущен Firebird Embedded – собственно, никаких отличий от установки «только файлы» здесь нет, разве что не требуется запуск instreg.

    Дерзайте, пробуйте. Надеюсь, эта статья облегчит использование серверов Firebird и InterBase на вашем компьютере, а, значит, вы сможете уделить больше внимания качеству своих приложений.

    Доступ к СУБД Firebird из PHP. Делаем отображение информации на планшет из корпоративной БД.

    Конечно Firebird это очень нетипичная база данных для веба, но когда стоит задача дать людям возможность оперативно у себя на телефоне или планшете видеть информацию из корпоративной СУБД, которая как раз на Firebird, то написать несколько несложных php-скриптов и поставить локальный веб-сервер куда проще, чем создавать отдельное приложение под android и iOS.

    Для того чтобы заставить php обращаться к Firebird или Interbase серверу в расширениях php (PHP Extensions) нам понадобится php_interbase модуль (в моем случае php_interbase.dll

    Само же общение с сервером Firebird отличается от MySQL лишь особенностями языка запросов, а в php разница практически отсутствует. Тестовый файл работы с БД может выглядеть так:

    В результате обращения к этому файлу в браузере мы увидим результат запроса, показывающий количество пользовательских таблиц в базе.

    При этом важно чтобы и сам файл php и база данных была в одной кодировке, например оба в windows-1251. Но зачастую в вебе для страниц применяется кодировка UTF-8, в ней же сохраняются и php-файлы, в этом случае достаточным оказалось задать дополнительный параметр в строке подключения:

    $db = ibase_connect($database, $user, $password, «UTF-8»);

    После чего результат запросов стал отдаваться в UTF-8.

    Стандартные функции рнр для работы с MySql

    PHP имеет целый ряд встроенных функций для работы с СУБД MySQL.

    Соединение с сервером

    mysql_connect (имя_сервера [:номер_порта], имя_пользователя, пароль)

    mysql_pconnect (те же аргументы)

    Первым аргументом может быть имя или адрес. Номер порта указывается, если он отличается от стандартного (3306). Функция возвращает идентификатор соединения.

    Функция mysql_pconnect() устанавливает устойчивое соединение, которое не разрывается после завершения работы сценария, а mysql_connect() – неустойчивое. Если другой PHP-сценарий сделает вызов функции mysql_pconnect() с аналогичными аргументами, то устойчивое соединение будет использовано повторно.

    Выбор базы данных

    Выполнение указанного запроса

    mysql_query(имя_переменной с текстом запроса, имя_переменной с идентификатором соединения)

    Функция принимает в качестве аргумента текст SQL-запроса плюс идентификатор соединения, полученный от функции mysql_connect(), и возвращает идентификатор результирующего набора записей. В случае ошибки возвращается 0.

    Извлечение информации

    mysql_fetch_field(имя_переменной с идентификатором запроса)

    Функция возвращает объект, содержащий описание полей указанного набора записей. В свойстве name этого объекта содержится вся информация о столбце, включая его тип и размерность.

    Получить значения из записей (строк) можно разными способами:

    mysql_fetch_row (имя_переменной с идентификатором запроса)

    Функция возвращает массив значений столбцов, индексация которых начинается с 0.

    Для обхода всех записей в наборе данных (массиве) можно использовать оператор цикла foreach, который обеспечивает последовательный переход от записи к записи и присвоение значения каждого следующего элемента массива новой переменной:

    foreach (имя_переменной с результатом извлечения записи as перем_для вывода а экран)

    mysql_fetch_array(имя_переменной с идентификатором запроса)

    Функция преобразует результат запроса в обычный массив (по умолчанию и индексный, и ассоциативный)

    Пример визуализации данных из хранилища на web-странице:

    Создание базы данных в Interbase и настройка ProxyInspector для работы с ней

    Внимание:
    IBConsole не входит в стандартный дистрибутив FireBird. Вы можете скачать эту утилиту отдельно с сайта Borland(нужно будет зарегистрироваться на сайте):
    http://codecentral.borland.com/codecentral/ccweb.exe/download? >

    Для того, чтобы создать базу данных необходимо на компьютере, на котором установлен Interbase/Firebird, запустить утилиту IBConsole(ярлык находится в группе Interbase), войти на сервер(Server | Login, по умолчанию после установки пользователь: SYSDBA, пароль: masterkey), далее запустить утилиту Interactive SQL: пункт меню Tools | Interactive SQL . .

    Если это первый запуск IBConsole после установки Interbase/Firebird, то сервер необходимо сначала зарегистрировать в IBConsole. Выберите пункт меню Server | Register, в появившимся окне выберите Local Server и нажмите ОК. После чего нужно выполнить процедуру входа на сервер описанную выше.

    После установки ProxyInspector SQL скрипт для создания БД на сервере Interbase/Firebird находится в каталоге

    — каталог в который установлен ProxyInspector. Нажно открыть этот скрипт в ISQL командой Query | Load Script:

    вместо строки enter database filename here ввести желаемое полное имя и путь к файлу БД(с расширением .gdb), также заменить если нужно имя пользователя и пароль(сохранять не рекомендуется), после чего выполнить команду Query | Execute. База данных будет создана.

    Теперь нужно указать путь к ней в ProxyInspector. Запустите ProxyInspector, выберите пункт меню База | Настройки программы, страница База данных | Сервер Interbase:

    при доступе по протоколу TCP/IP путь к БД будет состоять из имени или IP-адреса сервера БД, и полного имени файла БД(это же имя указывалось в SQL скрипте при создании БД), разделенных двоеточием. Например: db-server:c:\db-data\interbase\pi_ent.gdb или 10.0.0.5:d:\data\pi_ent.gdb и.т.д.

    Если нужно измените имя пользователя и пароль для доступа к серверу Interbase. Опцию Выключать индексы во время импорта следует оставить включенной на время первоначального импорта большого объема лог файлов и выключить после него.

    После этого на странице База данных настроек также нужно выбрать Сервер Interbase, нажать OK и перезапустить PI. После чего выбрать База данных | Соединить для подключения к БД.

    Для доступа к БД Interbase с других компьютеров необходимо наличие библиотеки gds32.dll в каталоге \system32. Эта библиотека находится в каталоге \system32 компьютера с сервером Interbase и также устанавливается при установке Interbase Client.

    PHP interbase проблема с настройкой

    Автор: LoranST, 6 апреля 2012 в PHP

    Рекомендованные сообщения

    Создайте аккаунт или войдите в него для комментирования

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйтесь для получения аккаунта. Это просто!

    Войти

    Уже зарегистрированы? Войдите здесь.

    Статистика пользователей

    Сейчас на странице 0 пользователей

    Нет пользователей, просматривающих эту страницу.

    Спрашивают сейчас

    Автор: npofopr
    Создана 18 октября

    Автор: decode
    Создана Суббота в 16:49

    Автор: digenis
    Создана 21 час назад

    Пишут сейчас

    в
    $(«.city_name»).click(function() <
    у вас происходит
    $(«.active .city_list__info .toggle—open»).on(«click», function(e)
    т.е. при втором нажатии на элементы вешается еще раз click и их становится 2
    если нажать 3 раза, то будет 3 карты

    вариант вытащить
    $(«.active .city_list__info .toggle—open»).on(«click», function(e)
    из
    $(«.city_name»).click(function() <

    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL