I am using Curl to connect to a server and update data using the following function. The function works great and updates approx 400 records. After that it throws an error, please advise how to solve this issue ?
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
The PHP Function is as follows
<?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();
}
At a pinch I'd say you are opening too many connections to the server
Each time you call that method you open a new request, but don't close it. It will stay open until the timeout is reached
If your server only allows 400 simultaneous connections, anything after the 400th call to the method will fail
You need to close your connections after each request
curl_close($ch)
I think your curl need a SSL verification.
Please put following line on your CURL code
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
This line is pass "true" is your request URL is HTTPS otherwise it's "false".
In your case i think it's true. Please pass true parameter and check it.