php cli模式 curl,php cli 模式 curl请求越来越慢

本文讲述了在Workerman项目中,使用curl发起HTTPS请求时遇到的性能下降问题。当不关闭SSL证书校验时,请求处理速度显著变慢,服务器频繁进入busy状态。关闭SSL验证后,请求耗时稳定,性能得到改善。问题可能与SSL证书校验过程的计算成本有关,关闭验证为一种临时解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

项目使用workerman,其中有一块代码,会定时通过curl发送一个https请求,通知php-fpm。最近发现一个诡异的问题,程序刚开的时候正常没有问题,但是运行了几天 business处理请求就会异常的慢。上服务器查看status,发现进场是进场进入busy状态。

处理

因为是服务器内部的请求,所以就把ssl证书的校验关闭了

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

代码示例

'!QAZ2wsxfuck$001789', 'roomId' => 83];

//初始化

$curl = curl_init();

//设置抓取的url

curl_setopt($curl, CURLOPT_URL, $url);

//设置头文件的信息作为数据流输出

//curl_setopt($curl, CURLOPT_HEADER, 1);

//设置获取的信息以文件流的形式返回,而不是直接输出。

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

//设置post方式提交

curl_setopt($curl, CURLOPT_POST, 1);

// 设置超时时间

curl_setopt($curl, CURLOPT_TIMEOUT, 3);

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

//执行命令

$result = curl_exec($curl);

var_dump($result);

//关闭URL请求

curl_close($curl);

$endTime = microtime(TRUE);

echo "cost time " . ($endTime - $startTime). PHP_EOL;

//sleep(10);

usleep(50000);

}

一开没有关闭ssl证书校验的时候,发送几千的请求之后,curl的时间耗时就会超过一秒

4343 cost time 1.6078729629517

4344 cost time 1.413125038147

4345 cost time 1.4656598567963

4346 cost time 1.5153200626373

4347 cost time 1.4436540603638

4348 cost time 1.570643901825

4349 cost time 1.4153439998627

4350 cost time 1.5104820728302

关闭之后,即使上w个请求 耗时几乎没有什么大的波动

75154 cost time 0.014031171798706

75156 cost time 0.01432204246521"

75158 cost time 0.016821146011353

75160 cost time 0.013806104660034

75162 cost time 0.014341115951538

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值