Подключение к базе данных OSI Pi с использованием PHP
Я пытаюсь подключиться к базе данных OSI Pi и продолжаю получать сообщения об ошибках ниже. У меня все права установлены правильно, потому что я могу запустить код VB. Он правильно читает версию сервера.
Вот мой PHP:
<?php
echo "I will connect to PI Server, read pisdk version and read server time";
echo "<br>";
$pisdkComObject = new COM("PISDK.PISDK") or die("Unable to instantiate PISDK object");
echo "PI server version {$pisdkComObject->PISDKVersion}";
$myServer = $pisdkComObject->Servers->Item("XXXX_SERVERNAME_XXXX");
$myServer->Open();
echo "<br>";
echo "PI server time is {$myServer->ServerTime}";
?>
Вот мой вывод:
Версия сервера PI 1.3.6 Неустранимая ошибка: необработанное исключение 'com_exception' с сообщением 'Источник: pisdk.dll Описание: Невозможно открыть сеанс на сервере. [-10728] PINET: ошибка отправки.' в E:\XXXX.php:12 Трассировка стека: #0 E:XXXX.php(12): вариант->Open() #1 {основной}, брошенный в E: XXXX.php в строке 12
1 ответ
Вот альтернативный подход: предварительным условием является установка поставщика PI OLEDB.
Затем перейдите по http://adodb.org/dokuwiki/doku.php и установите библиотеку ADODB для php в соответствии с указаниями. Там также есть некоторая вводная информация о библиотеке.
Следующим моим шагом было создание UDL (сохраните пустой текстовый файл с расширением ".udl"), затем дважды щелкните его, чтобы открыть диалоговое окно "Свойства ссылки на данные". На вкладке "Поставщик" выберите "Поставщик PI OLE DB". На вкладке "Соединение" введите имя своего сервера в текстовом поле "Источник данных". Вам также нужно будет настроить регистрационную информацию, уникальную для вашего сервера. Для этого подключения к разработке я использовал "piarchive" в качестве своего "начального каталога для использования". После успешного выполнения [Test Connection] вы можете нажать [OK].
Затем щелкните правой кнопкой мыши на UDL и откройте с помощью блокнота или любого текстового редактора. Выберите и скопируйте строку подключения (т. Е. "Provider=PIOLEDB.1;. . .. и т. Д.).
Далее приведен фрагмент кода, который я использовал для создания небольшой таблицы значений для тега CDT158 и соответствующего массива. В моей версии для разработки я поместил этот код между тегами body.
PHP включают в себя ("ADOdb / adodb.inc.php"); $ connection = new COM ("ADODB.Connection") или die ("Не удается запустить ADO"); // Строка соединения PI OLEDB (UDL). $ connection-> Open("Provider=PIOLEDB.1; Начальный каталог =piarchive; Источник данных =yourPIServerNameHere;Persist Security Info=False"); $result_set = $connection->Execute(" ВЫБЕРИТЕ тег, ВРЕМЯ, значение ИЗ ПИКОМП ГДЕ ВРЕМЯ>= '*-90m' И tag = 'cdt158' "); $result_count = 0; $ метки = массив (); while (!$result_set->EOF) { print $result_set->fields[0].' | '.$result_set-> поля [1]. | '. $ result_set-> fields [2].'
'; array_push ($ label, "{$result_set->fields[1]}"); $result_count = $result_count +1; $ Result_set->MoveNext(); } echo "
Количество найденных записей:". $ result_count. "
"; echo ""; print_r ($ этикетки); // это отображает сгенерированный массив. echo " pre>"; $ Result_set->Close(); // необязательный $ Connection->Close(); // необязательный?>