Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PEAR] Problem z uruchomieniem Web Service'u
mm-kk
post 19.03.2011, 14:29:51
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 19.03.2011

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


Witam,

Próbuję stworzyć mój pierwszy Web Service (oparty o SOAP/WSDL) z użyciem PHP. Wcześniej robiłem to w Javie, więc teorię na temat Web Service'ów mam. W PHP też już sporo programuję. Niestety te dwie sprawy nie pomogły mi załatwić problemu na który natrafiłem na samym początku.

Do uruchomienia Web Service'u postanowiłem użyć pakietu PEAR, a konkretnie Services_Webservice (plik: Webservice.php). Utworzyłem taką oto prostą usługę (zapisaną w pliku usluga.php):

  1. <?php
  2. ini_set("include_path", '<tu moja sciezka podana przez firme hostingowa przy instalacji pear>:' . ini_get("include_path") );
  3.  
  4. require_once 'Services/Webservice.php';
  5.  
  6. class Prostopadloscian
  7. {
  8. /**
  9. * @var int
  10. */
  11. public $dlugosc = 1;
  12. /**
  13. * @var int
  14. */
  15. public $szerokosc = 2;
  16. /**
  17. * @var int
  18. */
  19. public $wysokosc = 3;
  20. }
  21.  
  22. $prostopadlosciany[1] = new Prostopadloscian();
  23. $prostopadlosciany[2] = new Prostopadloscian();
  24.  
  25. class WS extends Services_Webservice
  26. {
  27. /**
  28. * Pobieramy prostopadlosciany
  29. * @return Prostopadloscian[]
  30. */
  31. public function getProstopadlosciany()
  32. {
  33. return $prostopadlosciany;
  34. }
  35.  
  36. }
  37.  
  38. $options = array('uri' => 'usluga', 'encoding' => SOAP_ENCODED);
  39.  
  40. $service = new WS('usluga', 'description', $options);
  41.  
  42. $service->handle();
  43. ?>


Następną rzeczą którą chcę zrobić jest uzyskanie pliku WSDL. Zgodnie z dokumentacją, należy do URL'a prowadzącego do pliku php z moją usługa dodać ?wsdl aby to zrobić. Problem w tym, że usługa działa "jednorazowo", tzn. przy pierwszym wywołaniu wszystko jest ok, przy następnych wyskakują już natomiast dwa błedy:

1) Warning: strpos(): Offset not contained in string in <sciezka do PEARa>/Webservice.php on line 518

Drugi jest znacznie gorszy:

2) Fatal error: Uncaught exception 'ReflectionException' with message 'Class does not exist'

Debugując kod odkryłem, że w kodzie PEARa (w pliku Webservice.php, a więc NIE w moim kodzie) czasem do konstruktora klasy ReflectionClass trafia pusty ciąg znaków - i wtedy właśnie usługa się wykrzacza, zwracając w/w komunikat (zresztą widać, że jako nazwa klasy która nie istnieje w komunikacie błędu mamy właśnie pusty ciąg znaków).

Podsumowując: nie wiem co się dzieje. Jak napisałem - usługa działa tylko jednorazowo. Każde kolejne (po pierwszym) wywołanie zwraca oba błędy. Co ciekawe, kilka godzin później znowu daje się uruchomić usługę...

Pomoże ktoś? Co jeszcze mam dostarczyć żeby lepiej opisać błąd? Przy okazji: jestem nowy na forum, więc witam wszystkich serdecznie smile.gif

--
Maciek

Ten post edytował mm-kk 19.03.2011, 15:56:16
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.06.2025 - 20:16