致命错误:/var/www/vhosts/abc.com/中的消息'无法连接到主机'的未捕获异常

时间:2013-04-30 13:55:14

标签: php curl

我使用Curl连接服务器并使用以下函数更新数据。该功能运行良好,可更新约400条记录。之后它会抛出错误,请告知如何解决这个问题?

Fatal error: Uncaught exception  with message 'couldn't connect to host' in /var/www/vhosts/abc.com/

comm_Api_Connection->put('https://www.vam...', Object(stdClass)) #2 /var/www/vhosts/abc.com/httpdocs/mysite/demo/comm-common1/Api.php(1530): 

comm_Api::updateResource('/products/5250', Array) #3 /var/www/vhosts/abc.com/httpdocs/mysite/demo/sync_prod_inventory_new1.php(1088):

comm_Api::updateProduct('5250', Array) #4 {main} thrown in /var/www/vhosts/abc.com/httpdocs/mysite/demo/comm-common1/Api.php on line 204

PHP函数如下

<?php
public function put($url, $body)
{
    $this->addHeader('Content-Type', $this->getContentType());

    if (!is_string($body)) {
        $body = json_encode($body);
    }

    $this->initializeRequest();

    $handle = tmpfile();
    fwrite($handle, $body);
    fseek($handle, 0);

    curl_setopt($this->curl, CURLOPT_INFILE, $handle);
    curl_setopt($this->curl, CURLOPT_INFILESIZE, strlen($body));
    curl_setopt($this->curl, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_setopt($this->curl, CURLOPT_URL, $url);
    curl_setopt($this->curl, CURLOPT_PUT, true);
    curl_exec($this->curl);

    return $this->handleResponse();
}

2 个答案:

答案 0 :(得分:1)

在紧要关头,我会说你打开了太多与服务器的连接

每次调用该方法时,都会打开一个新请求,但不要关闭它。它将保持打开状态,直到达到超时

如果您的服务器仅允许400个并发连接,则在第400次调用该方法后的任何内容都将失败

您需要在每次请求后关闭您的连接

curl_close($ch)

答案 1 :(得分:1)

我认为你的卷曲需要SSL验证。

请在您的CURL代码

上添加以下内容
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

此行传递“true”是您的请求URL是HTTPS,否则它是“false”。

在你的情况下,我认为这是真的。 请传递true参数并检查它。