php接口超时如何处理

(*-*)浩
(*-*)浩 原创
2023-02-24 20:02:02 3053浏览

一般我们访问HTTP方式很多,主要是:curl, socket, file_get_contents() 等方法。

如果碰到对方服务器一直没有响应的时候,我们就悲剧了,很容易把整个服务器搞死,所以在访问http的时候也需要考虑超时的问题。

[ CURL 访问HTTP]

CURL 是我们常用的一种比较靠谱的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等。(推荐学习:PHP编程从入门到精通

还是让我们使用 cURL 扩展来处理超时控制吧

假如你想更精确的处理超时,就使用 cURL 扩展,它可以设置连接超时和读取超时(CURLOPT_TIMEOUTCURLOPT_CONNECTTIMEOUT)。

假如希望控制 HTTP 接口必须在毫秒级别返回,还可以使用 CURLOPT_TIMEOUT_MS and CURLOPT_CONNECTTIMEOUT_M 常量。

注意假如使用这两个常量,必须设置 curl_setopt($ch, CURLOPT_NOSIGNAL, 1);

神奇的来了,cURL 扩展机制很特别,在指定的读取时间获取到多少数据就返回多少,然后调用也终止,程序并不报错

通过代码看一下:

function e_curl() {
    global $url;
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
    $response = curl_exec($ch);
    if ($response === false) {
        $info = curl_getinfo($ch);
        if ($info['http_code'] === 0) {
        return false;
        }
    }
    return true;}e_curl();

以上就是php接口超时如何处理的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。