我使用这个版本。
private function options($curl)
{
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_HTTPHEADER, $this->headers);
curl_setopt($curl, CURLOPT_USERAGENT,
$_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_REFERER, $_SERVER['HTTP_REFERER']);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($curl, CURLOPT_TIMEOUT, 3);
$this->result = curl_exec($curl);
return curl_getinfo($curl, CURLINFO_HTTP_CODE) == 200;
}
我检查是否收到来自第一台服务器的响应,如果没有,则转到第二台服务器。
public function runHandler()
{
if ($this->options($this->curlOne)) {
return strnatcasecmp(trim($this->result),"true") == 0 ? true : false;
} else {
if ($this->options($this->curlTwo)) {
return strnatcasecmp(trim($this->result),"true") == 0 ? true : false;
} else {
return false;
}
}
}
问题是数据库宕机了,服务器有响应,但是数据处理根本没有发生,转换到另一个服务器没有通过,我等待服务器响应20秒,客户端页面也加载20秒。告诉我如何在服务器之间进行操作?
一行解决了这个问题。
curl_setopt($curl, CURLOPT_TIMEOUT_MS, 700);
设置允许接收请求的最长时间。以毫秒为单位指定。
考虑到下载的特性,因为我设置了 500 并且并不总是收到 curl 的响应,因为连接已关闭并且调用的是另一台服务器,尽管第一个服务器正在工作)