Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/COM] Component Object Model + API
woolkan
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Seth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


OK. Postaram sie pobawic tym troche.
Chociaz odrazu uprzedzam, ze najwczesniej bede mogl do tego zajrzec w poniedzialek :/

Inna sprawa to taka, ze moze sprawdz (zanim ja to zrobie) jak sie zachowuje ten skrypt na Windowsowym Apacheu - bo i on sie do tego nadaje.

Nie wiem czy przypadkiem IIS nie blokuje COMa do wyjscia na zewnatrz.
Z tego co opisales wyglada jakby nie mogl nawiazac polaczenia, a sam COM zaladowal sie bez problemu.

Ten post edytował Seth 7.10.2006, 02:09:25
Go to the top of the page
+Quote Post
woolkan
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 10.06.2006

Ostrzeżenie: (0%)
-----


Cytat(Seth @ 7.10.2006, 03:09:01 ) *
OK. Postaram sie pobawic tym troche.
Chociaz odrazu uprzedzam, ze najwczesniej bede mogl do tego zajrzec w poniedzialek :/

Inna sprawa to taka, ze moze sprawdz (zanim ja to zrobie) jak sie zachowuje ten skrypt na Windowsowym Apacheu - bo i on sie do tego nadaje.

Nie wiem czy przypadkiem IIS nie blokuje COMa do wyjscia na zewnatrz.
Z tego co opisales wyglada jakby nie mogl nawiazac polaczenia, a sam COM zaladowal sie bez problemu.


Sprawdziłem na Apache'u (koniecznie z załadowanym mod_ssl) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i odkryłem że IIS nie wypuszcza połączeń SSL a API łączy się poprzez SSL. Efekt jest taki że wszystko co trzeba jest pobierane poprzez API z serwera. Natomiast jest jeden kolejny problem na który się natknąłem (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Jeśli php łączy się poprzez COM z API to otwierany jest swego rodzaju stały proces który działa dotąd aż go nie zamknie się. Czyli jeśli odpalam pierwszy raz skrypt wywołujący plecenie:
  1. <?php
  2. $vtApi = new COM("vtapi.vt_api");
  3. ?>

to wszystko jest ok. Ale jeśli wywołam ponownie mój skrypt to następuje kolejne wywołanie COM przez co Apache świruje i nie przetwarza skryptu. Jedyny ratunek to restart Apacha.

Najlepszym rozwiązaniem jest sprawdzenie czy COM już został wywołany. I właśnie.. co polecicie? myślałem o funkcji com_get_active_object() (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Albo ja nie rozumiem tej funkcji albo ona nie chce mi działać tak jak należy. Zastanawiałem się też nad przechowywaniem stanu w cookies lub w MySQL ale jeśli zastosuje takie rozwiązanie to nie będę miał tworzonego uchwytu do API więc to nie tędy droga.

Seth (lub ktokolwiek inny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) czy mógłbyś mi powiedzieć co mam wpisać jako daną wejściową w funkcji com_get_active_object(string progid). Próbowałem wprowadzić $progid = "vtapi.vt_api" i $progid = "{B4306CAA-55F9-4A84-B792-AA65EA7CECB2}" ale niestety ani dla jednej ani dla drugiej wartości nie działa ta funkcja jak należy. Niestety nie wiem co powinienem podać jako daną wejściową. Help plisss (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam i dziękuję,
woolkan

Ten post edytował woolkan 8.10.2006, 01:59:18
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 02:13