Rumah >pembangunan bahagian belakang >masalah PHP >php接口超时如何处理

php接口超时如何处理

(*-*)浩
(*-*)浩asal
2019-09-25 11:15:363663semak imbas

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

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

php接口超时如何处理

[ 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();

Atas ialah kandungan terperinci php接口超时如何处理. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:php接口是什么Artikel seterusnya:php获取扩展名的几种方法是什么