2012-12-11 4 views
2

Я пытаюсь подключиться к базе данных OSI Pi и продолжать получать ошибки ниже. У меня все права установлены правильно, потому что я могу запустить код VB. Он правильно читает версию сервера.Подключение к базе данных OSI Pi с использованием PHP

Вот мой 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 Фатальная ошибка: Uncaught исключение 'com_exception является' с сообщением «Источник: pisdk.dll Описание: Не для открытия сеанса на сервере. [-10728] PINET: Отправить ошибку. в E: \ XXXX.php: 12 Трассировка стека: # 0 E: XXXX.php (12): variant-> Open() # 1 {main} выбрано в E: XXXX.php в строке 12

+0

вы пытались добавить доверие на вашем PI сервере? Открытый метод без параметров подключается с помощью доверенной или окна аутентификации. – codea

ответ

1

альтернативный подход: Предпосылкой является установка поставщика PI OLEDB.

Затем перейдите к http://phplens.com/adodb/index.html и установите библиотеку ADODB для php, как указано. Также есть некоторая вводная информация о библиотеке.

Следующим шагом было сгенерировать UDL (сохранить пустой текстовый файл с расширением '.udl'), а затем дважды щелкнуть по нему, чтобы открыть диалоговое окно Свойства канала передачи данных. На вкладке «Поставщик» выберите «Поставщик PI OLE DB». В разделе «Тип подключения» введите имя вашего сервера pi в текстовом поле «Источник данных». Вам также необходимо настроить информацию для входа в систему, уникальную для вашего сервера. Для этой разработки я использовал «piarchive» как мой «исходный каталог для использования». После успешного [Тестовое соединение] вы можете нажать [OK].

Затем щелкните правой кнопкой мыши по UDL и откройте его с помощью блокнота или любого текстового редактора. Выберите и скопируйте строку подключения (например, «Provider = PIOLEDB.1 ;. и т. Д.»).

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

 
<?php 
    include("adodb/adodb.inc.php"); 
    $connection = new COM("ADODB.Connection") or die("Cannot start ADO"); 

    // PI OLEDB (UDL) connection string. 
    $connection->Open("Provider=PIOLEDB.1;Initial Catalog=piarchive; 
     Data Source=yourPIServerNameHere;Persist Security Info=False"); 

    $result_set = $connection->Execute(" 
       SELECT tag, TIME, value 
       FROM picomp 
       WHERE TIME >= '*-90m' AND tag = 'cdt158' 
       "); 
    $result_count = 0; 
    $labels = array(); 
    while (!$result_set->EOF) 
    { print $result_set->fields[0].' | '.$result_set->fields[1].' | '.$result_set->fields[2].'<br />'; 
     array_push($labels, "{$result_set->fields[1]}"); 
     $result_count = $result_count +1; 
     $result_set->MoveNext(); 
    } 

    echo "<br />The number of records retrieved is: ".$result_count."<br /><br />"; 

    echo "<pre>"; 
     print_r($labels); // this displays the array generated. 
    echo "</pre>"; 

    $result_set->Close(); // optional 
    $connection->Close(); // optional 
?> 

 Смежные вопросы

  • Нет связанных вопросов^_^