经过测试发现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静态 文件的问题嘛?
linux 64位 webman 1.5.6 php静态 8.1(使用的是群主的静态php8.1.19)
就是群主的静态php8.1.19 版本的问题,自己打包一个php8.1.22就好了
workerman的php8.1.19已经下线了,现在是也是8.1.22
不知道 使用你打包的静态php8.1.22还是慢,老大你自己试试看看,我这里真的慢,换成github上自己打包的就好了
试了两台服务器,测试了没问题。验证码也没问题。
找到问题了 就是服务器的问题,就是ipv6 和 ipv4的问题 vim /etc/resolv.conf options timeout:1 attempts:1 rotate single-request-reopen
现在又发现一个问题,静态php 8.1 8.2 都一样,你用本地构建的 curl 非常慢,你用github actions构建的 gd库缺失重要参数,导致不能使用验证码
就是ipv6 和 ipv4的问题 vim /etc/resolv.conf options timeout:1 attempts:1 rotate single-request-reopen