![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 10.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam bardzo nietypowy problem. Potrzebuje napisać aplikacje w php która będzie wykożystywać API zainstalowane na systemie windosowym. Do API mam dostęp przez COM (Component Object Model). Wiem że w php COM jest dostępny tylko dla wersji Windosowych więc postawiłem sobie pod XP serwer IIS oraz PHPv5.1.6. Problem jest tego typu: jak dostać się do dostarczonego API? w necie nic nie znalazłem co mogłoby mnie naprowadzić jak używać COM w php i prawdę mówiąc nie mam zielonego pojęcia jak uruchomić to API z php (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) w manualu php też niewiele pisze:( Plik PDF z dokumentacją znajduje się pod tym adresem: plik pdf. API dotyczy platformy inwestycyjnej o której możesz poczytać na tej stronie: http://cms-forex.com/, dodatkowo możesz załozyć konto demo które będzie potrzebne do testowania API. Sama platforma oraz API dla tej platformy jest dostępne na stronie http://vtsystems.com/en/products/. I teraz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) po zainstalowaniu platformy (VT Trader) na dysku a następnie API (VT Trader API) możesz mieć dostęp do swojego konta inwestycyjnego poprzez inne oprogramowania niżeli VT Trader (to chyba oczywiste). W katalogu gdzie instaluje się API są dostępne przykłady dla różnych języków programowania takich jak VB, C#, PERL, JAVA oraz pliki excelowskie z makrami pisanymi w VB dla excela. Brak przykładu dla php (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ;P Moim zadaniem jest napisanie aplikacji która będzie umożliwiała połączenie się z serwerami platformy (dla demo serwera adres: vtdemo.fxserver.com) a następnie pobranie informacji o stanie konta (czyli otwarte pozycje stan konta etc.) oraz sprawdzenie aktualnych notowań. W sumie całość będzie podobna do przykładowego pliku excelowego z katalogu z API. Cała aplikacja ma chodzić na serwerze z systemem Windows XP (najpierw a później będzie migracja na win2k3) a dostęp musi być poprzez WWW. Defakto całość nie wydaje się jakoś szczególnie trudna zwarzywszy że API dostarcza gotowych funkcji które mają zwracać z serwera odpowiednie dane więc moja praca będzie się ograniczać do obrobienia i wyświetlenia danych wyjściowych i tyle. Najtrudniejszą rzeczą w chwili obecnej jest połączenie się poprzez API. Nigdy wcześniej nie miałem do czynienia z COM i dlatego to dla mnie jest nie do przejścia w chwili obecnej (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Co prawda mógłbym napisać w jakimś języku programowania lecz niestety c++ znam słabo a za jave dopiero się zabrałem więc inne języki poza php odpadają. Z góry wielkie dzięki wszystkim za ewentualną pomoc, woolkan (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 12 Dołączył: 3.03.2008 Skąd: łódzkie Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź REGSVR32 /u nazwa-pliku.dll Uruchomienie tej komendy powiodło się (takie okno dialogowe wyskoczyło). Dodatkowo nastąpiło usunięcie wpisu w rejestrze, który wyżej podałem. Teraz wywołanie tej biblioteki API zarówno z CLI jak i z przeglądarki zwraca błąd o niezarejestrowanej klasie: Kod exception 'com_exception' with message 'Failed to create COM object `{CE92C3B9...9170AEF7F}': Klasa niezarejestrowana. ' in C:\wamp\www\backoffice\index.php:6 Stack trace: #0 C:\wamp\www\backoffice\index.php(6): com->com('{CE92C3B9...') #1 {main} I znowu wracam do tematu (IMG:style_emoticons/default/smile.gif) COM, który chciałem używać działa już mi i łączę się pięknie z serwerem poprzez API udostępniane jako DLL. Teraz mam problem z Event Handlerem :/ To API posiada interfejs dla 3 eventów, OnServerConnect, OnServerDisconnect oraz OnNewData. Zgodnie z dokumentacją PHP do zarejestrowania obiektu odpowiadającego za gadanie z Event Handlerami COMa używam tej funkcji: com_event_sink($COM_Object, $Event_Handler_Object, 'Interfejs_Eventow_COM') Całość wygląda tak:
Odpalam powyższy skrypt w konsoli. COM działa, dokonuje się subskrypcja, ale dodawanie wszelkich nowych zleceń do systemu nie powoduje przepływu eventa o tym zdarzeniu (nowe zleceni) do skryptu, nic się nie dzieje, skrypt cały czas siedzi w pętli while(). Jeśli tego nie przeskoczę będę musiał odpalić VisualStudio i niestety sięgnąć po C# czego wolałbym uniknąć. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 16:39 |