2017-12-04 3 views
0

So lange Geschichte kurz, ich war mit diesem alten PHP-Dienstprogramm fest, das ein altes Zend-Framework verwendet. Ich habe Probleme, wenn es Zeitüberschreitung es nicht wiederholt, so dass es fehlschlägt. Ich habe alles getan, von der Änderung der Timeout-Timer bis zur Änderung der maximalen Redirects und alles andere, was ich mit den Einstellungen machen kann und immer noch das Gleiche bekomme.Zend Timeout Retry

ich eine konsistente

Fatal error: Uncaught exception 'Zend_Http_Client_Exception' with message 'Unable to read response, or response is empty'

und wenn ich es passieren, um zu versuchen, genug wird es ohne Probleme funktionieren. Es ist nur das Problem, es erneut zu versuchen.

Ich bin nicht sicher, wo ich nachdenken sollte, um die Wiederholungslogik zu setzen.

ich gesehen habe einige sagen, dass es irgendwo hier gehen würde (Zend_Http_Client)

public function request($method = null) 
{ 
    if (! $this->uri instanceof Zend_Uri_Http) { 
     /** @see Zend_Http_Client_Exception */ 
     require_once 'Zend/Http/Client/Exception.php'; 
     throw new Zend_Http_Client_Exception('No valid URI has been passed to the client'); 
    } 

    if ($method) { 
     $this->setMethod($method); 
    } 
    $this->redirectCounter = 0; 
    $response = null; 

    // Make sure the adapter is loaded 
    if ($this->adapter == null) { 
     $this->setAdapter($this->config['adapter']); 
    } 

    // Send the first request. If redirected, continue. 
    do { 
     // Clone the URI and add the additional GET parameters to it 
     $uri = clone $this->uri; 
     if (! empty($this->paramsGet)) { 
      $query = $uri->getQuery(); 
       if (! empty($query)) { 
        $query .= '&'; 
       } 
      $query .= http_build_query($this->paramsGet, null, '&'); 

      $uri->setQuery($query); 
     } 

     $body = $this->_prepareBody(); 
     $headers = $this->_prepareHeaders(); 

     // Open the connection, send the request and read the response 
     $this->adapter->connect($uri->getHost(), $uri->getPort(), 
      ($uri->getScheme() == 'https' ? true : false)); 

     $this->last_request = $this->adapter->write($this->method, 
      $uri, $this->config['httpversion'], $headers, $body); 

     $response = $this->adapter->read(); 
     if (! $response) { 
      /** @see Zend_Http_Client_Exception */ 
      require_once 'Zend/Http/Client/Exception.php'; 
      throw new Zend_Http_Client_Exception('Unable to read response, or response is empty'); 
     } 

     $response = Zend_Http_Response::fromString($response); 
     if ($this->config['storeresponse']) { 
      $this->last_response = $response; 
     } 

dachte ich es auch hier gehen könnte (in meinem eigenen Code)

   $eventResponse = new Response($Client->Event(
       $theEvent,null)); 

       if (!$throwEventResponse->getResponseStatusOk()) { 
        $ex = new ResponseException("Unable to complete event."); 
        $ex->setErrorList($throwEventResponse->getErrorList()); 
        throw $ex; 
       } 

Im an einem Bit von einem Verlust und ich bin mir nicht sicher, wie ich darüber gehen soll, um für das zu arbeiten, was ich brauche.

Vielen Dank im Voraus!

+0

Welche Datei und welche Zeile gibt diesen Fehler? –

+0

die Datei ist ein zufälliges pdf nichts verrückt. Beim Aufruf der Ereignisantwort (liest nur den Dateinamen ein und erstellt daraus einen Ordner. Wenn ich dies mehrmals wiederhole, wird der Ordner erst erstellt, nachdem unzählige Male Fehler aufgetreten sind – iDaRkkO

Antwort

0

Gefunden, dass durch Ändern der Art der HTTP-Anfrage von HTML 1.1 auf 1.0 behoben das Problem, das ich mit den Anrufen hatte, um zum nächsten zu bewegen, ohne auf den vorherigen Anruf zu warten, um zu beenden.

die zweite Anfrage vor dem anderen zu schieben, verursachte ein seltsames Caching-Problem und die Anfrage schlug fehl.