經(jīng)過測試發(fā)現(xiàn)php靜態(tài)8.1 請求curl非常慢,最少需要5s多,使用php7.3環(huán)境一樣的代碼 0.1s
$requestId = '123456';
$phone = '13601381588';
$code = '1234560';
$content = '尊敬的用戶,您好,您的驗證碼為'. $code . ',驗證碼有效時間為10分鐘,請及時輸入!退訂回復(fù)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');//抓取指定網(wǎng)頁
curl_setopt($ch, CURLOPT_HEADER, 0);//設(shè)置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結(jié)果為字符串且輸出到屏幕上
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靜態(tài) 文件的問題嘛?
linux 64位 webman 1.5.6 php靜態(tài) 8.1(使用的是群主的靜態(tài)php8.1.19)
就是群主的靜態(tài)php8.1.19 版本的問題,自己打包一個php8.1.22就好了
找到問題了 就是服務(wù)器的問題,就是ipv6 和 ipv4的問題 vim /etc/resolv.conf options timeout:1 attempts:1 rotate single-request-reopen
現(xiàn)在又發(fā)現(xiàn)一個問題,靜態(tài)php 8.1 8.2 都一樣,你用本地構(gòu)建的 curl 非常慢,你用github actions構(gòu)建的 gd庫缺失重要參數(shù),導(dǎo)致不能使用驗證碼
就是ipv6 和 ipv4的問題 vim /etc/resolv.conf options timeout:1 attempts:1 rotate single-request-reopen