Есть код:
class CurlAny extends BaseObject
{
protected $_ch;
protected $_timeout = 10;
public function __construct(array $config = [])
{
$this->_ch = curl_init();
parent::__construct($config);
}
public function send()
{
$this->_query('test.com', ['key' => 'value']);
}
private function _query(string $url, $data = false)
{
if (!$this->_ch) {
throw new Exception('Empty $_ch in MtargetOffers.');
}
curl_setopt($this->_ch, CURLOPT_URL, $url);
curl_setopt($this->_ch, CURLOPT_HEADER, false);
curl_setopt($this->_ch, CURLOPT_TIMEOUT, $this->_timeout);
curl_setopt($this->_ch, CURLOPT_NOBODY, 0);
curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, true);
if ($data) {
curl_setopt($this->_ch, CURLOPT_POST, true);
curl_setopt($this->_ch, CURLOPT_HTTPHEADER, [
'Expect:',
]);
curl_setopt($this->_ch, CURLOPT_POSTFIELDS, http_build_query($data));
} else {
throw new Exception('Пустые данные на нашей стороне', 500);
}
$page = curl_exec($this->_ch);
$info = curl_getinfo($this->_ch);
$err = curl_errno($this->_ch);
$errmsg = curl_error($this->_ch);
if ($this->_ch) {
curl_close($this->_ch);
}
return $page;
}
}
Код немного упрощен, но передано самое важное. Используется Yii2 на PHP 7.3
Время от времени отлавливаю такую ошибку
curl_setopt(): supplied resource is not a valid cURL handle resource
В чем может быть причина? Разве не достаточно проверки
if (!$this->_ch) {...}
?
P.S. На ~10000 запросов (с полной инициализацией данного объекта для каждого запроса) приходится 2-3 шт. указанной ошибки.