Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][SOAP] php nie wyrabia?
Forum PHP.pl > Forum > PHP
MolTAR
Witam
Mam kod klienta i serwera soap. Wszystko działa dobrze tylko że serwer nie zawsze zwraca poprawne dane. Dzieje się tak najczęściej wtedy, gdy np. kliknę kilka razy odśwież, ale podczas zwykłej pracy również tylko rzadziej.
Moje pytanie jest takie:
Czy to wina soap'a, czy tego, że komputer, na którym stoi serwer jest za słaby, czy może samego kodu php, który jest wykonywany w funkcjach serwera soap.

Serwer jest zrobiony tak:

  1. <?php
  2. function funkcja()
  3. {
  4.  return 'to jest funkcja';
  5. }
  6.  
  7. class myServer extends SoapServer
  8. {
  9.  public function __construct()
  10.  {
  11.    parent::__construct( null, array( "uri" => "service://przyklad.pl" ) );
  12.    $this->addFunction( "funkcja" );
  13.    $this->handle();
  14.  }
  15. }
  16.    
  17. $srv = new myServer();
  18. ?>


Kod klienta to np:
  1. <?php
  2. class myClient extends SoapClient
  3. {
  4.  public function __construct()
  5.  {          
  6.     parent::__construct( null, array(    'uri'         => 'service://przyklad',
  7.                                                 'location'     => 'http://globalna sciezka do pliku serwera' ) );
  8. }
  9.  
  10. $client = new myClient();
  11. echo $client->funkcja();
  12. ?>
batman
1. Co rozumiesz przez niepoprawne dane?
2. Po co wrzuciłeś to do klasy? Dane do usługi zapisujesz sobie w pliku konfiguracyjnym i nie musisz tworzyć kolejnej (zbędnej) warstwy abstrakcji.
MolTAR
Przez nieprawidłowe dane rozumiem to, że serwer w niektórych funkcjach sprawdza szereg rzeczy i jak któryś z tych testów się nie powiedzie to zwraca odpowiedni błąd, a jak wszystko pójdzie dobrze to zwraca dane o które prosi klient. W większości przypadków wszystko dzieje się dobrze, ale czasem zwraca jakiś błąd - za każdym razem jest to inny błąd.
Powiedzmy, że miałby sprawdzać IP klienta oraz hasło, które wpisał i raz na kilka przypadków zwraca błąd, że IP jest złe, innym razem że hasło jest złe, a w większości działa dobrze.

Po co to jest w klasie? Tego nie wiem, bo ten kod nie był pisany przeze mnie. Dostałem go, żeby wprowadzić w nim zmiany.
Jednak usuwając tę klasę problem dalej występuje.
batman
Nie spotkałem się z takim błędem, więc ciężko stwierdzić od razu co jest nie tak.
Na początek zrób tak. W metodzie, która najczęściej powodowała problemy, loguj dane, które przychodzą i dane, które są zwracane. Po analizie tych danych może się okazać, że błąd leży w samej metodzie lub przyjmowanych danych. Jeśli to nie pomoże, to wystaw gdzieś na świat tą usługę i podaj namiary oraz przykładowe wywołanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.