0

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();
}
4

2 に答える 2

1

ピンチで、サーバーへの接続を開きすぎていると思います

そのメソッドを呼び出すたびに、新しいリクエストを開きますが、閉じないでください。タイムアウトになるまで開いたままになります

サーバーが 400 の同時接続しか許可しない場合、メソッドへの 400 回目の呼び出し以降はすべて失敗します。

リクエストごとに接続を閉じる必要があります

curl_close($ch)
于 2013-04-30T14:03:19.877 に答える