Witam,
Piszę klasę do automatycznego eksportu/importu ofert z serwisu otomoto.pl.
Praktycznie wszystko działa, ale w wypadku wywołania za pomocą API metody "getDealerInsertions" wyskakuje błąd 500 (Internal Server Error), pomimo tego, że dane są wprowadzone według opisu użycia tej metody na: http://otomoto.pl/webapi/server.php
Gdy wprowadzę nieprawidłowe dane, np. nie wprowadzę klucza API, to poprawnie kod działa i zwraca informację o błędnie wprowadzonych danych. Gdy dane są poprawne, dostaję błąd 500. Za pomocą tej metody pobieram listę ofert, wraz z ich opisem i wyposażeniem (około ~600 ofert).
Kod:
  1. public function getActiveOffer()
  2. {
  3. global $client;
  4. $parameters = array(
  5. 'type' => 'ACTIVE',
  6. 'session-id' => (string)$this->OtomotoSessionId,
  7. 'webapi-key' => (string)$this->OtomotoApiKey
  8. );
  9. return $client->__soapCall('getDealerInsertions', $parameters);
  10. }

połączenie jest otwierane podczas wywołania klasy w funkcji __construct() (nie zamieszczam klasy, cała ma ponad 1000 linii kodu)
Co może być przyczyną?
Wszelkie identyczne funkcje, używające tylko inną metodę poprawnie mi działają.

Odkryłem, że jeśli ograniczę liczbę wyników do ~800 to Internal Server Error nie wyskakuje, jeśli ustawieliczbę wyników powyżej, to otrzymuję błąd.
Napisałem na nowo funkcję:
  1. public function getActiveOffer($limit=100)
  2. {
  3. global $client;
  4. $parameters = array(
  5. 'type' => 'ALL_SHORTENED', // ACTIVE, INACTIVE, ALL, ALL_SHORTENED
  6. 'session-id' => (string)$this->OtomotoSessionId,
  7. 'webapi-key' => (string)$this->OtomotoApiKey,
  8. 'offset' => 0,
  9. 'limit' => $limit
  10. );
  11. $response = $client->__soapCall('getDealerInsertions', $parameters);
  12. if ($response['status'] == 'OK')
  13. {
  14. foreach ($response['insertions-list'] as $offer)
  15. {
  16. if ((string)$offer->status == 'ACT')
  17. {
  18. $i++;
  19. $return[$i]['AUTOS_ID'] = (string)$offer->{'remote-id'};
  20. $return[$i]['OTOMOTO_ID'] = (string)$offer->{'id'};
  21. $return[$i]['LAST_MODYFICATION'] = (string)$offer->{'modification-datetime'};
  22. $return[$i]['VIEWS_NUM'] = (string)$offer->{'views-num'};
  23.  
  24. }
  25. }
  26. } else
  27. {
  28. return false;
  29. }
  30. return $return;
  31. }


Mam tylko pytanie, co powoduje błąd 500 jeśli limit ustawie powyżej 800 np. dam 900 albo więcej, czy jest to związane z jakimś timeout'em? jak to zmienić?