Zend超时重试

时间:2017-12-04 02:24:04

标签: php zend-framework

这么长的故事简短我被困在这个使用旧的zend框架的旧PHP实用程序。我遇到麻烦,当它超时它没有重试,所以它失败了。我已经完成了从更改超时计时器到更改最大重定向以及我可以对设置执行的所有其他操作的所有操作,并且仍然可以获得相同的功能。

我得到了一致

  

致命错误:未捕获的异常' Zend_Http_Client_Exception'有消息'无法阅读回复,或回复为空'

如果我碰巧尝试了它,它将毫无问题地工作。它只是重试它是问题。

我不确定在哪里考虑重置逻辑。

我看到有人说会在这里某处(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;
        }

我在想它也可以(在我自己的代码中)

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

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

我有点失落,我不知道如何去做我最需要的工作。

提前致谢!

1 个答案:

答案 0 :(得分:0)

发现通过将HTTP请求的类型从HTML 1.1更改为1.0,修复了我在调用移动到下一个调用时遇到的问题,而没有等待上一次调用完成。

在另一个请求完成之前推送第二个请求导致了一个奇怪的缓存问题并且请求失败。