php-curl-请求超时随笔

技术文档网 2021-04-16

问题产生

线上发现curl 请求,接口返回http_code=0,查看了网上的资料,http_code 的大多是冲100 开始,比如:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status 对于0只有一句话:unable to access https://www.cnblogs.com/doseoer/p/5623285.html 并没有明确的解释。

解决问题

1.源码安装php
2.因为curl是php的一个扩展,所以还需要安装扩展
3.查找源码位置

PHP_FUNCTION(curl_getinfo)
{
    zval        *zid;
    php_curl    *ch;
    zend_long    option = 0;

    if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &zid, &option) == FAILURE) {
        return;
    }

    if ((ch = (php_curl*)zend_fetch_resource(Z_RES_P(zid), le_curl_name, le_curl)) == NULL) {
        RETURN_FALSE;
    }

    if (ZEND_NUM_ARGS() < 2) {
        char *s_code;
        /* libcurl expects long datatype. So far no cases are known where
           it would be an issue. Using zend_long would truncate a 64-bit
           var on Win64, so the exact long datatype fits everywhere, as
           long as there's no 32-bit int overflow. */
        long l_code;
        double d_code;

源码中显示,http_code 初始化为0,当有值返回时,更新。
4.进行验证

<?php
//phpinfo();
//exit;
// 创建一个cURL句柄
$ch = curl_init('http://www.baidu.com/');
curl_setopt($ch, CURLOPT_TIMEOUT_MS,1000);
// 执行
curl_exec($ch);

// 检查是否有错误发生
if(!curl_errno($ch))
{
    $info = curl_getinfo($ch);

    echo 'Took '  . ' seconds to send a request to ';
}else {
    $info = curl_getinfo($ch);
}
var_dump(curl_errno($ch),$info);
// Close handle
curl_close($ch);

当curl_errno返回28(即超时)时,http_code 初始化值
curl_errno的意思:https://www.php.net/manual/en/function.curl-errno.php

相关文章

  1. 如何通过xhprof分析性能

    使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i

  2. LUMEN API Controller 规范

    1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo

  3. PHP文件锁

    共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他

  4. Hello-Risen-程序

    首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发

  5. PHP自定义类示例(Weixin消息解析类)

    PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50

随机推荐

  1. 如何通过xhprof分析性能

    使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i

  2. LUMEN API Controller 规范

    1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo

  3. PHP文件锁

    共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他

  4. Hello-Risen-程序

    首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发

  5. PHP自定义类示例(Weixin消息解析类)

    PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50