【已解决】静态php8.1 请求curl 非常慢基本都是5s多,php7.3环境非常快

tanhongbin

问题描述

经过测试发现php静态8.1 请求curl非常慢,最少需要5s多,使用php7.3环境一样的代码 0.1s

程序代码或配置

$requestId = '123456';
    $phone = '13601381588';
    $code = '1234560';
    $content = '尊敬的用户,您好,您的验证码为'. $code . ',验证码有效时间为10分钟,请及时输入!退订回复T';
    $data = [
        'content' => $content,
        'phone' => $phone,
        'channel' => 'mocentre',
        'requestId' => $requestId,
        'timestamp' => time(),
        'subId' => 0,
        'action' => 'sendSms'
    ];
    $item = json_encode($data);
    $data['item'] = $item;
    $data['publicKey'] = '';
    $data['format'] = '';
    $data['signature'] = getSign($data, '');
    $curlPost = http_build_query($data);
    $ch = curl_init();//初始化curl
    curl_setopt($ch, CURLOPT_URL,'http://aaaa.com');//抓取指定网页
    curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
    curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '0');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '0');
    $data = curl_exec($ch);//运行curl
    curl_close($ch);

    function getSign(array $params,string $secretKey) : string
    {
        ksort($params);
        $str = $secretKey;
        foreach ($params as $k => $val) {
            $str .= $k. urlencode($val);
        }
        $str .= $secretKey;
        return md5($str);
    }
    echo $data;

重现问题的步骤

就很奇怪,是php8.1静态 文件的问题嘛?

操作系统环境及workerman/webman等具体版本

linux 64位 webman 1.5.6 php静态 8.1(使用的是群主的静态php8.1.19)

746 3 0
3个回答

tanhongbin

就是群主的静态php8.1.19 版本的问题,自己打包一个php8.1.22就好了

  • walkor 2023-09-12

    workerman的php8.1.19已经下线了,现在是也是8.1.22

  • tanhongbin 2023-09-12

    不知道 使用你打包的静态php8.1.22还是慢,老大你自己试试看看,我这里真的慢,换成github上自己打包的就好了

  • walkor 2023-09-12

    截图
    试了两台服务器,测试了没问题。验证码也没问题。

  • tanhongbin 2023-09-13

    找到问题了 就是服务器的问题,就是ipv6 和 ipv4的问题 vim /etc/resolv.conf options timeout:1 attempts:1 rotate single-request-reopen

tanhongbin

现在又发现一个问题,静态php 8.1 8.2 都一样,你用本地构建的 curl 非常慢,你用github actions构建的 gd库缺失重要参数,导致不能使用验证码

  • 暂无评论
tanhongbin

就是ipv6 和 ipv4的问题 vim /etc/resolv.conf options timeout:1 attempts:1 rotate single-request-reopen

  • 暂无评论
🔝